如何从Android主题中提取颜色值(#rgb)?

我想使用主题中的颜色将其应用到HTML应用程序正在呈现的HTML中。 我想知道我能做到吗?

我正在寻找像使用themes.xml中指定的颜色:

<item name="colorBackground">@android:color/background_dark</item> <item name="textColorPrimary">@android:color/primary_text_dark</item> 

所以看着他们,他们是以同样的方式宣布的。 所以我想我也可以用同样的方式访问它们。

这不是原因。 当试图以这种方式访问​​这些值时:

  TypedValue tv = new TypedValue(); getTheme().resolveAttribute(android.R.attr.colorBackground, tv, true); System.out.println("tv.string=" + tv.string); System.out.println("tv.coerced=" + tv.coerceToString()); int colorResourceId = getResources().getColor(tv.resourceId); System.out.println("colorResourceId=" + colorResourceId); tv = new TypedValue(); getTheme().resolveAttribute(android.R.attr.textColorPrimary, tv, true); System.out.println("tv.string=" + tv.string); System.out.println("tv.coerced=" + tv.coerceToString()); colorResourceId = getResources().getColor(tv.resourceId); System.out.println("colorResourceId=" + colorResourceId); 

我得到这个结果:

 I/System.out( 1578): tv.string=null I/System.out( 1578): tv.coerced=#ffffffff I/System.out( 1578): colorResourceId=-1 I/System.out( 1578): tv.string=res/color/primary_text_light.xml I/System.out( 1578): tv.coerced=res/color/primary_text_light.xml I/System.out( 1578): colorResourceId=-16777216 

结果是不同的。 第一个实际上给我的颜色“#fffffff”这将为我工作,第二个只给了我一个XML。

我是否需要跳过这里来解决实际的颜色? 我的初衷是否有用? 也许这是行不通的,因为颜色可以是任意的drawables?

我没有find任何相关的文件,但是如果你知道的话,请指出我的位置。

顺便说一句。 我也尝试了getsStyledAttributes(),但是这有基本相同的问题。

Solutions Collecting From Web of "如何从Android主题中提取颜色值(#rgb)?"

我想你应该重命名colorResourceId myColor或类似的东西,因为这就是它应该在你的代码,据我所知。

-16777216相当于0xFF000000,这是黑色,所以可能你的主题是在白色背景上的黑色文字。