我想为几个按钮使用自定义背景颜色。我尝试了android:background="#cc2"
,但它取代了整个按钮,因此它看起来不像是一个按钮了。
显然,人们可以使用<selector>
(drawable)。这是唯一的方法吗?我在哪里可以获得原始标准Android按钮的模板?
注意:this question的接受答案不是我想要的,因为它看起来不像标准的Android按钮。
答案 0 :(得分:3)
基于this question,我能够确定标准按钮模板,例如Android 2.2位于
C:\Program Files (x86)\Android-sdk\platforms\android-8\data\res\drawable\btn_default.xml
显然,您的PC上的路径可能不同。它指的是诸如"@drawable/btn_default_normal"
之类的抽象,它指的是9个补丁文件,例如HDPI的是
data\res\drawable-hdpi\btn_default_normal.9.png
data\res\drawable-hdpi\btn_default_normal_disable.9.png
data\res\drawable-hdpi\btn_default_pressed.9.png
data\res\drawable-hdpi\btn_default_selected.9.png
data\res\drawable-hdpi\btn_default_normal_disable_focused.9.png
如何查找资源:我从Button.java的构造函数开始(使用SDK Manager下载Android SDK的源代码):
this(context, attrs, com.android.internal.R.attr.buttonStyle);
指的是<item>
中的res/values/themes.xml
:
<item name="buttonStyle">@android:style/Widget.Button</item>
其中涉及<style>
中的res/values/styles.xml
:
<style name="Widget.Button">
<item name="android:background">@android:drawable/btn_default</item>
<item name="android:focusable">true</item>
<item name="android:clickable">true</item>
<item name="android:textAppearance">?android:attr/textAppearanceSmallInverse</item>
<item name="android:textColor">@android:color/primary_text_light</item>
<item name="android:gravity">center_vertical|center_horizontal</item>
</style>
最终引用res/drawable/btn_default.xml
。
答案 1 :(得分:2)
添加你的风格
<style name="MyButtonStyle" parent="android:Widget.Button">
<item name="android:background">@drawable/btn_default</item>
</style>
和你的选择器(这里是btn_default.xml)
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_window_focused="false" android:state_enabled="true"
android:drawable="@drawable/btn_default_normal" />
<item android:state_window_focused="false" android:state_enabled="false"
android:drawable="@drawable/btn_default_normal" />
<item android:state_pressed="true"
android:drawable="@drawable/btn_default_pressed" />
<item android:state_focused="true" android:state_enabled="true"
android:drawable="@drawable/btn_default_pressed" />
<item android:state_enabled="true"
android:drawable="@drawable/btn_default_normal" />
<item android:state_focused="true"
android:drawable="@drawable/btn_default_pressed" />
<item
android:drawable="@drawable/btn_default_normal" />
</selector>
和您的图片(9个补丁)btn_default_normal和btn_default_pressed(名称可能与这些名称不同) 然后,将样式应用于xml中的按钮:
<Button
...
style="@style/MyButtonStyle"
/>
答案 2 :(得分:1)
如果您更改按钮背景,则会更改整个背景,如您所见。如果您想拥有自己风格或颜色的按钮,可以创建一个9补丁文件,其中包含您选择的图形作为按钮背景。如果您希望它显示选择或单击状态,您可以使用带选择器的状态列表。
这里解释了9patch和选择器:http://developer.android.com/guide/topics/resources/drawable-resource.html
答案 3 :(得分:0)
我在哪里可以获得原始标准Android按钮的模板?
系统资源包含在SDK中。
您可以在sdk-root/platforms/[pick a platform]/data/res/drawable/
根据您要查找的平台级别,您可能会发现您需要的xml选择器是普通的可绘制的,并且png本身位于一个特定于分辨率的文件夹中,例如drawable-mdpi或drawable-hdpi