我想爲一些按鈕使用自定義背景顏色。我試過android:background="#cc2"
,但它取代了整個按鈕,所以它不再像一個按鈕。如何設置Android按鈕的背景顏色?
很明顯,人們可以使用<selector>
(可繪製)。這是唯一的方法嗎?我在哪裏可以獲得原始的標準Android按鈕的模板?
注意:this question的接受答案不是我想要的,因爲它看起來不像標準的Android按鈕。
我想爲一些按鈕使用自定義背景顏色。我試過android:background="#cc2"
,但它取代了整個按鈕,所以它不再像一個按鈕。如何設置Android按鈕的背景顏色?
很明顯,人們可以使用<selector>
(可繪製)。這是唯一的方法嗎?我在哪裏可以獲得原始的標準Android按鈕的模板?
注意:this question的接受答案不是我想要的,因爲它看起來不像標準的Android按鈕。
基於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個補丁文件,例如,對華電國際的有
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>
這是指在res/values/styles.xml
<style>
:
<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
。
如果您更改了按鈕背景,則整個背景會發生變化,正如您注意到的那樣。如果您想使用自己的樣式或顏色來創建按鈕,則可以創建一個包含您選擇的圖形作爲按鈕背景的9補丁文件。如果您希望它顯示選擇或單擊狀態,則可以使用帶選擇器的狀態列表。
兩個9patch和選擇進行了說明:http://developer.android.com/guide/topics/resources/drawable-resource.html
哪裏獲得原始,標準的Android按鈕模板?
系統資源包含在SDK中。
你可以找到他們(在Windows上):sdk-root/platforms/[pick a platform]/data/res/drawable/
取決於哪個平臺級別你正在尋找你會發現你所需要的XML選擇在平原繪製和PNG的本身是在一個分辨率特定的文件夾例如drawable-mdpi或drawable-hdpi
謝謝,但迄今爲止,我還無法確定實際的drawable,無論是選擇器還是9補丁或兩者。 – Qwertie
添加您的風格
<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"
/>
btn_default_normal或btn_default_pressed在哪裏?我應該創建新的xml並調用btn_default_pressed? –
他們是9patch圖像放在drawable-nodpi文件夾中。 – Yar
有辦法應用一個顏色過濾器到按鈕,就像你提到的那個貼:'button.getBackground()。setColorFilter(new LightingColorFilter(0xFFFFFFFF,0xFFAA0000));'。也許這是你需要的,因爲按鈕仍然是「標準Android按鈕」? –