我有一些按鈕,我將它的背景色分別設置爲紅色,綠色和藍色。當我按下按鈕時,會產生單擊事件,但gui中用戶不知道按鈕被按下時沒有變化。 Android按鈕的默認背景灰色將變爲橙色,並在釋放按下狀態後恢復爲淺灰色。如何在彩色按鈕上實現這個?如何在Android中按下時更改顏色按鈕的顏色?
8
A
回答
26
這是通過StateListDrawable
實現的,selector
代表XML。參考:http://developer.android.com/guide/topics/resources/drawable-resource.html#StateList
這裏是一個繪製一個例子,當按下這將是白色的默認,黑色:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true"
android:drawable="@android:color/black" /> <!-- pressed -->
<item android:drawable="@android:color/white" /> <!-- default -->
</selector>
2
嘗試這個辦法:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android" >
<item android:state_pressed="true" >
<shape>
<solid
android:color="#1E669B" />
<stroke
android:width="2dp"
android:color="#1B5E91" />
<corners
android:radius="6dp" />
<padding
android:left="10dp"
android:top="10dp"
android:right="10dp"
android:bottom="10dp" />
</shape>
</item>
<item>
<shape>
<gradient
android:startColor="#1E669B"
android:endColor="#1E669B"
android:angle="270" />
<stroke
android:width="4dp"
android:color="#1B5E91" />
<corners
android:radius="7dp" />
<padding
android:left="10dp"
android:top="10dp"
android:right="10dp"
android:bottom="10dp" />
</shape>
</item>
</selector>
8
正如K-Ballo所提到的,您可以使用StateListDrawable來根據狀態實現具有各種不同圖形的視圖。在你的情況下,按鈕是兩個狀態是按下按鈕而沒有按下按鈕的視圖。
我們需要在繪製文件夾中創建buttonselector.xml文件
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/button_not_pressed" android:state_pressed="false" android:state_selected="false"/>
<item android:drawable="@drawable/button_pressed" android:state_pressed="true"/>
</selector>
的按鈕button_pressed狀態
button_not_pressed.xml
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<gradient
android:startColor="#FFFFFF"
android:centerColor="#FFFFFF"
android:endColor="#FFFFFF"
android:angle="270" />
</shape>
創建兩個單獨的XML文件.xml
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<gradient
android:startColor="#FF0000"
android:centerColor="#FF0000"
android:endColor="#FF0000"
android:angle="270" />
</shape>
您會注意到兩個html顏色代碼#FF0000 & #FFFFFF,它們代表根據狀態顯示按鈕的背景顏色。
在你的main.xml,你設置你的自定義按鈕
<Button
android:id="@+id/customButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/buttonselector"
android:text="test"
android:textColor="#000000" />
的風格在你活動類添加以下兩行
Button customButton = (Button) findViewById(R.id.customButton);
customButton.setBackground(getResources().getDrawable(R.drawable.buttonselector));
希望它可以幫助
+0
更徹底的答案! – Diesel
相關問題
- 1. 更改TextView按下按鈕的顏色
- 2. 如何更改Android按鈕顏色onClick?
- 3. 如何在按下按鈕時改變按鈕的顏色
- 4. 更改顏色的按鈕
- 5. 如何在按下按鈕時更改文字顏色?
- 6. IBAction按鈕更改顏色?
- 7. 更改按鈕顏色
- 8. 按鈕更改顏色
- 9. 更改按鈕顏色
- 10. 更改AlertDialog.Builder按鈕顏色
- 11. 更改radcombobox按鈕顏色
- 12. 更改按鈕顏色onClick
- 13. 如何在選擇按鈕時更改按鈕的顏色?
- 14. 如何在Android中點擊時更改按鈕的顏色?
- 15. 按下按鈕時更改Android微調器文本顏色
- 16. 按下/下按鈕時,如何更改按鈕的背景顏色?
- 17. 如何更改按鈕的tabcontrol顏色?
- 18. 如何更改gridView的按鈕顏色
- 19. 如何更改按鈕的顏色?
- 20. 如何更改按鈕的顏色
- 21. 如何更改UIActionsheet按鈕的顏色?
- 22. 如何在android中按下按鈕/文本視圖時更改文本顏色
- 23. 如何將按鈕的顏色更改爲其默認顏色
- 24. 更改臨時按鈕的顏色
- 25. ActionBar在按下時更改菜單項按鈕的顏色
- 26. Android更改ABS按鈕顏色
- 27. 使用SharedPreferencers Android更改按鈕顏色?
- 28. 更改按鈕顏色時的圖標顏色
- 29. 如何更改按鈕顏色?
- 30. 如何更改顏色點擊按鈕?
非常感謝它完美的工作 – amy