原文地址: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有被点击的效果,但是不执行点击事件”。