我有一个包含2个TextView的LinearLayout,一个更大,黑色,一个更小,浅灰色。默认情况下,LinearLayout的背景是白色的,然后触摸相当强烈的蓝色,当它被触摸(IE蓝色)时,灰色文本会丢失颜色,所以我想将其更改为白色。
我见过(使用按钮)我可以给textColor一个像这样的资源文件来改变文本的颜色
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_focused="true" android:state_pressed="false" android:color="#ffffff" />
<item android:state_focused="true" android:state_pressed="true" android:color="#000000" />
<item android:state_focused="false" android:state_pressed="true" android:color="#000000" />
<item android:color="#ffffff" />
</selector>
我可以为Layout / TextView做类似的事情吗?我考虑使用OnTouchListener
,但颜色没有与背景同时改变,我还没有发现onTouchEnd事件将颜色重置为灰色。
答案 0 :(得分:6)
您可以android:duplicateParentState="true"
将TextView
应用到LinearLayout
的{{1}}。
然后,click事件将传播到两个子视图。
答案 1 :(得分:0)
如何将onTouchListener添加到父==&gt;从此回叫中返回false ==&gt;同时在同一个回调中获取父级的所有子级==&gt;将它们转换为TextViews并设置文本颜色==&gt;调用Parent.invalidate()。