修改LinearLayout中子控件TextView点击颜色小结

原文地址:http://www.eoeandroid.com/thread-900367-1-1.html


需求:在点击整个LinearLayout的同时,LinearLayout的子控件TextView也要随着点击而改变。

    分析:一开始我认为是点击事件分发问题,后来查看了资料之后才发现用一行代码就可以搞定。
             1、首先写TextView根据点击字体颜色变化的代码,这种情况一般要用到selector:
            
       <?xml version="1.0" encoding="utf-8"?>
                          <selector xmlns:android="http://schemas.android.com/apk/res/android">

                               <item android:state_pressed="true" android:color="@color/textColor_selected"></item>
                               <item android:state_pressed="false" android:color="@color/textColor_unselected"></item>

                           </selector>


                    但是需要注意的是红色字体部分,字体的颜色还需要在resources中进行定义:
                     
 <?xml version="1.0" encoding="utf-8"?>
                           <resources>
                                <color name="textColor_selected">#ffed6c00</color>  
                                <color name="textColor_unselected">#ff000000</color>
                          </resources>


              2、定义好之后就可以在TextView中使用了:
                  
<TextView
                        android:layout_width="fill_parent"
                        android:layout_height="wrap_content"
                        android:layout_marginLeft="10dp"
                        android:text="下载密钥"
                     <span style="color:#FF0000;">  android:textColor="@drawable/settingfont_selector</span>"/>


                红色字部分就是使用selector,但是这样设置之后点击字体的颜色仍不改变,我们还需要给TextView加上 android:duplicateParentState="true" 这个属性才可以。


           注 android:duplicateParentState

           “如果设置此属性,将直接从父容器中获取绘图状态(光标,按下等)。 注意仅仅是获取绘图状态,而没有获取事件,也就是你点一下LinearLayout时Button有被点击的效果,但是不执行点击事件”。

猜你喜欢

转载自blog.csdn.net/WangBuChuan/article/details/48542071