我想通過點擊按鈕改變一個 textview 的背景。
例如,如果點擊 textview,它的背景變成黃色,直到再次點擊時顏色又變成默認的背景顏色。
目前 textview 的背景顏色是按下點擊按鈕時改變,但是釋放時又變成默認的背景顏色。
Drawable/selector.xml:
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/circle_on" android:state_enabled="true" android:state_pressed="true"/>
<item android:drawable="@drawable/circle_on" android:state_enabled="true" android:state_focused="true"/>
<item android:drawable="@drawable/circle_off"/>
</selector>
Drawable/circle_on:
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="oval" >
<stroke
android:width="2dp"
android:color="@color/Gray" >
</stroke>
<solid android:color="@color/LightBlue" />
</shape>
Drawable/circle_off:
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="oval" >
<stroke
android:width="2dp"
android:color="@color/Gray" >
</stroke>
<solid android:color="@color/WhiteSmoke" />
</shape>
TextView:
<TextView
style="@style/RoundText"
android:layout_width="50dp"
android:layout_height="50dp"
android:background="@drawable/repeat_selector"
android:clickable="true"
android:text="Sun" >
</TextView>
Text Style:
<style name="RoundText">
<item name="android:textColor">#555555</item>
<item name="android:gravity">center_vertical|center_horizontal</item>
<item name="android:textSize">15sp</item>
<item name="android:textStyle">bold</item>
<item name="android:fontFamily">sans-serif-thin</item>
</style>
請問哪裡出錯了呢?
你的selector代碼有2個狀態就是按鈕點擊和焦點的時候會顯示circle_on的背景,但是不是這2個狀態的時候就是circle_off(釋放掉的時候或者焦點不在該button上的時候)
你最好還是代碼裡面實現,根據點擊的情況來判斷變背景色