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.

除上述注意事项外,由于您不引用资源,因此在构建时资源可能会缩减为未使用的资源。执行此代码时您的应用程序将崩溃。