gpt4 book ai didi

android - 在 Android 元数据中指定十六进制颜色值

转载 作者:太空狗 更新时间:2023-10-29 16:43:01 26 4
gpt4 key购买 nike

我正在努力让一些元数据在 Android 上运行。最具体地说,我正在获取应用程序级元数据以按以下格式设置 View 的背景:

<meta-data android:name="background"
android:value="red" />

<meta-data android:name="background"
android:resource="@drawable/my_red_background" />

<meta-data android:name="background"
android:value="#FF0000" />

我正在使用以下代码来解析信息:

ApplicationInfo app = getPackageManager().getApplicationInfo(getPackageName(), PackageManager.GET_META_DATA);
Bundle metaData = app.metaData;
if (metaData != null) {
int resourceID = metaData.getInt("background", -1);
if (resourceID != -1) {
//set the background resource of my view (THIS WORKS)
}
else {
String background = metaData.getString("background");
if (background != null) {
try {
backgroundColor = Color.parseColor(background);
//Set background color (THIS WORKS for 'red', 'blue', etc.)
}
catch (IllegalArgumentException e) {
e.printStackTrace();
}
}

}

如果我使用资源方法并将其指向可绘制对象,这就可以了。如果我使用“红色”、“蓝色”、“黄色”等颜色字符串,这些也可以。但是,如果我尝试在任何格式中使用以井号(#FF0000、#FFFF0000 等)开头的颜色,这将不起作用,即使 Android Documentation 也是如此。建议它应该:

android:value description

这是一个已知错误吗?有没有简单的解决方法(除了使用简单的字符串或可绘制引用之外)?或者我错过了什么?我正在使用 Asus Transformer Prime 10.1 TF301 平板电脑进行测试 (Android 4.0.3)。

编辑

我想指出,这不是 Color.parseColor() 的问题。 Android 从不输入语句 if (background != null),因此元数据根本不会被识别为字符串。

最佳答案

解决了!这本身不是 Android 错误,而是 Android 文档错误(惊喜,惊喜!)。十六进制颜色需要一个转义字符才能正确处理:

<meta-data android:name="background"
android:value="\#FF0000" />

enter image description here

关于android - 在 Android 元数据中指定十六进制颜色值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14692335/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com