25、TextView 设置Color/drawable Selector

一、问题

     在项目中经常遇到,Textview 点击同时改变 字体的颜色、字体的背景需求。


     


二、处理思路 


使用 color /drawable  所对应的 Selector文件。



三、使用过程


1、在color (要是没有需要自己手动创建) 和 drawable中创建 selector 文件;





     其中 :ask_pop_filter_color.xml  文件内容:

 


<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">

    <item android:color="@color/white_ff" android:state_selected="true"/>
    <item android:color="@color/exercise_restart_btn_bg" android:state_selected="false"/>
    <!--<item android:color="@color/white_ff" android:state_pressed="true"/>-->
    <!--<item android:color="@color/exercise_restart_btn_bg"/>-->
</selector>


ask_filter_popbg_select.xml  文件内容:


<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@drawable/shape_rectangle_bg_yellow" android:state_selected="true"/>
    <item android:drawable="@drawable/shape_rectangle_bg_white" android:state_selected="false"/>

</selector>


2、TextView 使用


<TextView
    android:id="@+id/tv_all"
    android:background="@drawable/ask_filter_popbg_select"
    android:textColor="@color/ask_pop_filter_color"
    android:layout_marginRight="20dp"
    android:layout_toLeftOf="@+id/tv_asked"
    android:layout_width="60dp"
    android:layout_height="40dp"
    android:layout_centerVertical="true"
    android:gravity="center"
    android:text="全部"/>

3、在代码中设置 TextView 的select  


mTextview.setSelected(false);

mTextview.setSelected(true);

控制 textview 的字体颜色 和背景图片。 


      还有很多的控件都可以使用selector ,总结备忘下。



四、坑!!!

   

需要注意的就是 selector 的两种写法:

错误写法:设置后无效!

<item android:color="@color/exercise_restart_btn_bg"/>
<item android:color="@color/white_ff" android:state_selected="true"/>
<item android:color="@color/exercise_restart_btn_bg" android:state_selected="false"/>

正确写法:

<item android:color="@color/white_ff" android:state_selected="true"/>
<item android:color="@color/exercise_restart_btn_bg" android:state_selected="false"/>
<item android:color="@color/exercise_restart_btn_bg"/>

或者 

<item android:color="@color/white_ff" android:state_selected="true"/>
<item android:color="@color/exercise_restart_btn_bg" android:state_selected="false"/>

至于原因 还没弄明白,请高人指教。。。





猜你喜欢

转载自blog.csdn.net/fdoubleman/article/details/78216615