2 znl 12 znl_12 于 2013.09.22 16:11 提问

通过按钮点击改变 TextView 的背景颜色

我想通过点击按钮改变一个 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>

请问哪里出错了呢?

2个回答

u013211506
u013211506   2014.01.07 14:59
已采纳

你的selector代码有2个状态就是按钮点击和焦点的时候会显示circle_on的背景,但是不是这2个状态的时候就是circle_off(释放掉的时候或者焦点不在该button上的时候)
你最好还是代码里面实现,根据点击的情况来判断变背景色

zhenglingkun
zhenglingkun   2013.09.23 17:11

那你就不应该用selector,

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!