Android Studio:是否可以通过变量调用资源?
Android Studio: Is it possible to call resources via variables?
我的 colors.xml 中有 9 个颜色资源,名为 colorRand01、colorRand02 .... colorRand09。
在我的 java 代码中,我调用
relativeLayout.setBackgroundResource(R.color.colorRand01);
更改颜色。
现在我有一个 int 变量(我们称它为 i),我想做类似的事情:
relativeLayout.setBackgroundResource("R.color.colorRand0" + i);
这在某种程度上是可能的吗?目前我的解决方案是这样的,但如果我能缩短它就更好了:
if(color == 1) {
relativeLayout.setBackgroundResource(R.color.colorRand01);
}else if (color == 2) {
relativeLayout.setBackgroundResource(R.color.colorRand02);
}else if (color == 3) {
relativeLayout.setBackgroundResource(R.color.colorRand03);
}else if (color == 4) {
relativeLayout.setBackgroundResource(R.color.colorRand04);
}else if (color == 5) {
relativeLayout.setBackgroundResource(R.color.colorRand05);
}else if (color == 6) {
relativeLayout.setBackgroundResource(R.color.colorRand06);
}else if (color == 7) {
relativeLayout.setBackgroundResource(R.color.colorRand07);
}else if (color == 8) {
relativeLayout.setBackgroundResource(R.color.colorRand08);
}else if (color == 9) {
relativeLayout.setBackgroundResource(R.color.colorRand09);
}
尝试使用这个
int colorID = getResources().getIdentifier("colorRand0" + i, "color", getPackageName());
relativeLayout.setBackgroundResource(colorID);
基于document:
Note: use of this function is discouraged. It is much more efficient
to retrieve resources by identifier than by name.
除上述注意事项外,由于您不引用资源,因此在构建时资源可能会缩减为未使用的资源。执行此代码时您的应用程序将崩溃。
我的 colors.xml 中有 9 个颜色资源,名为 colorRand01、colorRand02 .... colorRand09。
在我的 java 代码中,我调用
relativeLayout.setBackgroundResource(R.color.colorRand01);
更改颜色。
现在我有一个 int 变量(我们称它为 i),我想做类似的事情:
relativeLayout.setBackgroundResource("R.color.colorRand0" + i);
这在某种程度上是可能的吗?目前我的解决方案是这样的,但如果我能缩短它就更好了:
if(color == 1) {
relativeLayout.setBackgroundResource(R.color.colorRand01);
}else if (color == 2) {
relativeLayout.setBackgroundResource(R.color.colorRand02);
}else if (color == 3) {
relativeLayout.setBackgroundResource(R.color.colorRand03);
}else if (color == 4) {
relativeLayout.setBackgroundResource(R.color.colorRand04);
}else if (color == 5) {
relativeLayout.setBackgroundResource(R.color.colorRand05);
}else if (color == 6) {
relativeLayout.setBackgroundResource(R.color.colorRand06);
}else if (color == 7) {
relativeLayout.setBackgroundResource(R.color.colorRand07);
}else if (color == 8) {
relativeLayout.setBackgroundResource(R.color.colorRand08);
}else if (color == 9) {
relativeLayout.setBackgroundResource(R.color.colorRand09);
}
尝试使用这个
int colorID = getResources().getIdentifier("colorRand0" + i, "color", getPackageName());
relativeLayout.setBackgroundResource(colorID);
基于document:
Note: use of this function is discouraged. It is much more efficient to retrieve resources by identifier than by name.
除上述注意事项外,由于您不引用资源,因此在构建时资源可能会缩减为未使用的资源。执行此代码时您的应用程序将崩溃。