在我的 values
文件夹中,我有 my_colors.xml
:
<resources>
<!-- Orange -->
<color name="orangePrimary">#f6a02d</color>
<color name="orange1">#e3952a</color>
<color name="orange2">#da8f28</color>
<color name="orange3">#d08926</color>
</resources>
有没有办法只用名称的字符串来获取这些颜色?
类似于 view.setBackgroundColor.getColor("orange1");
对于图像,你有这个 getResources().getIdentifier("my_image", "drawable", getPackageName());
希望你们明白我的意思。 问候。
最佳答案
您是否尝试过以下方法:
// java
Resources res = context.getResources();
String packageName = context.getPackageName();
int colorId = res.getIdentifier("my_color", "color", packageName);
int desiredColor = res.getColor(colorId);
// kotlin
val res: Resources = context.getResources()
val packageName: String = context.getPackageName()
val colorId: Int = res.getIdentifier("my_color", "color", packageName)
val desiredColor: Int = res.getColor(colorId)
希望对您有所帮助!
注意:这已被弃用,您可以执行以下操作,它处理 Marshmallow (API 23) 之前和之后的操作:
// java
Resources res = context.getResources();
String packageName = context.getPackageName();
int colorId = res.getIdentifier("my_color", "color", packageName);
int desiredColor = ContextCompat.getColor(context, colorId);
// kotlin
val res: Resources = context.getResources()
val packageName: String = context.getPackageName()
val colorId: Int = res.getIdentifier("my_color", "color", packageName)
val desiredColor: Int = ContextCompat.getColor(context, colorId)
关于android - 可以用字符串获得颜色吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39817299/