state_pressed = true在点击任何地方时突出显示

时间:2014-12-08 14:19:52

标签: android selector

我使用selector来更改LinearLayout的背景。

<selector xmlns:android="http://schemas.android.com/apk/res/android">

    <item android:state_pressed="true" android:drawable="@color/holo_blue" ></item>
    <item android:drawable="@color/transparent"></item>
</selector>

但每当我点击屏幕上的任何地方时,我的LinearLayout的背景会发生变化。知道为什么会出现这种意想不到的行为吗?

1 个答案:

答案 0 :(得分:0)

这种情况正在发生,因为您的孩子视图没有消耗任何触摸事件,但是LinearLayout通过使用具有按下状态的背景表达了对触摸事件的兴趣(这是我基于经验的直觉;我不是确定这是否在Android文档中明确说明)。解决此问题的一种方法是使用xml属性TextView使clickable="true"可点击,而不在代码中指定任何点击行为,但如果你有一个很大的话,这显然不会很好地扩展子视图的数量。希望这提供了一个很好的起点。