在父LinearLayout touch上更改子TextView颜色

时间:2014-06-09 09:00:22

标签: android

我有一个包含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事件将颜色重置为灰色。

2 个答案:

答案 0 :(得分:6)

您可以android:duplicateParentState="true"TextView应用到LinearLayout的{​​{1}}。

然后,click事件将传播到两个子视图。

答案 1 :(得分:0)

如何将onTouchListener添加到父==&gt;从此回叫中返回false ==&gt;同时在同一个回调中获取父级的所有子级==&gt;将它们转换为TextViews并设置文本颜色==&gt;调用Parent.invalidate()。