android - 可以用字符串获得颜色吗?

标签 android string colors android-resources

在我的 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/

相关文章:

java - Android 如何在一行中显示 TextView 和 EditText?

javascript - 通过组合字符串和变量来创建新的 JavaScript 变量

Python:为什么 __str__ 不调用递归?

java - 如何替换Java中第一次出现的字符串

c++ - 更改 cout 文本的颜色 C++

java - iText PDF 颜色在 Acrobat 中不一致

java - 如何在建立 URL 连接之前检测用户是否有 3G/Wifi?

android - 具有 AppCompat 的透明覆盖 ActionBar?

javascript - 下拉菜单切换不适用于 ngTouch

python - 如何更改offsetbox TextArea的字体颜色