我正在制作一个应用程序,该应用程序使用子类别ImageView
来显示带有边框的图像而不是其中的一部分。以编程方式获取主题颜色
现在盒子被绘制成黄色,不管怎么样,但我认为如果颜色与系统按钮按下的颜色相匹配,比如Droid橙色,Evo绿色或蓝色Galaxy S
我环顾了一下API,但是找不到如何以编程方式抓住那个颜色。 任何想法?
我正在制作一个应用程序,该应用程序使用子类别ImageView
来显示带有边框的图像而不是其中的一部分。以编程方式获取主题颜色
现在盒子被绘制成黄色,不管怎么样,但我认为如果颜色与系统按钮按下的颜色相匹配,比如Droid橙色,Evo绿色或蓝色Galaxy S
我环顾了一下API,但是找不到如何以编程方式抓住那个颜色。 任何想法?
你可以看一下从Android的themes.xml
,styles.xml
,并且colors.xml
源。您从colors.xml中注意到的一件事是没有定义很多颜色。这是因为大部分小部件都是通过9个补丁文件完成的。
按钮风格:
223 <style name="Widget.Button">
224 <item name="android:background">@android:drawable/btn_default</item>
225 <item name="android:focusable">true</item>
226 <item name="android:clickable">true</item>
227 <item name="android:textAppearance">?android:attr/textAppearanceSmallInverse</item>
228 <item name="android:textColor">@android:color/primary_text_light</item>
229 <item name="android:gravity">center_vertical|center_horizontal</item>
230 </style>
全部完成更改背景颜色的工作在btn_default
Drawable
完成。
btn_default.xml来源:那些
17 <selector xmlns:android="http://schemas.android.com/apk/res/android">
18 <item android:state_window_focused="false" android:state_enabled="true"
19 android:drawable="@drawable/btn_default_normal" />
20 <item android:state_window_focused="false" android:state_enabled="false"
21 android:drawable="@drawable/btn_default_normal_disable" />
22 <item android:state_pressed="true"
23 android:drawable="@drawable/btn_default_pressed" />
24 <item android:state_focused="true" android:state_enabled="true"
25 android:drawable="@drawable/btn_default_selected" />
26 <item android:state_enabled="true"
27 android:drawable="@drawable/btn_default_normal" />
28 <item android:state_focused="true"
29 android:drawable="@drawable/btn_default_normal_disable_focused" />
30 <item
31 android:drawable="@drawable/btn_default_normal_disable" />
32 </selector>
每一个是一个9补丁文件。问题在于那些是png。颜色被嵌入到图像文件中,并且不在任何地方定义。正如您已经注意到,这些图像可以被替换,外观也会改变。
不幸的是,你想要的是不可能的。你将不得不选择一种颜色。这种颜色可能应该选择适合您的应用程序的其余部分。对不起:(
那真是令人沮丧。不过谢谢。 – infinitypanda 2010-08-03 16:23:43
检查此链接:Using Platform Styles and Themes
我不知道,如果子类是在这种情况下,做的最好的事情。 我会尝试:
我读过,但它没有帮助。它告诉我如何设置主题,但我想获得主题。 ImageButton并不是我要找的,对不起。图片不需要点击,我只想使用与按钮相同的颜色。 – infinitypanda 2010-07-30 22:04:41
于Android ICE_CREAM_SANDWICH(API 14),你必须在android.R.color主题颜色*
例如;
myTextView.setTextColor(getResources().getColor(android.R.color.holo_red_light));
在我有限的理解中,android.R.color提供的一些东西是静态颜色,而不是应用程序主题(可在运行时变化)的可变颜色。这样做的答案在这里:http://stackoverflow.com/questions/12375766/how-to-get-background-color-from-current-theme-programmatically – pbarranis 2016-02-12 17:16:25
这是一个很好的问题,我害怕没有解决方法,真的很伤心 – mad 2011-01-02 18:48:53
这个问题已经问了5年了......当前的答案现在位于这里:http://stackoverflow.com/questions/12375766/how-to-get-background-颜色从当前主题编程方式(第一个答案肯定有效......) – pbarranis 2016-02-12 17:17:06