0

我有一个 XML 文件,它定义了列表中一行的布局。布局在最外层是一个线性布局。在内部,还有另一个 LinearLayout,它占据了该行的右侧 30 个下降点。

我有一个可绘制集作为外部 LinearLayout 的背景资源。这用作行的选择器。该行通常是白色的。当你点击它时,它是绿色的。

我还有一个可绘制集作为内部 LinearLayout 的背景资源,它占据了该行的右侧 30 个倾角。那个drawable看起来像这样:

<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_selected="true"
        android:state_pressed="false"
        android:drawable="@color/light_blue_pressed" />
    <item android:state_selected="true"
        android:state_pressed="true"
        android:drawable="@color/light_blue_pressed" />
    <item android:state_selected="false"
        android:state_pressed="false"
        android:drawable="@color/light_blue" />
    <item android:state_selected="false"
        android:state_pressed="true"
        android:drawable="@color/light_blue_pressed" />
</selector>

我在这个内部的 LinearLayout 中添加了一个 OnClickListener,因此,当您单击它时,LinearLayout 的颜色会从 light_blue 变为 light_blue_pressed。

但是,单击行上的任何其他位置(阅读:外部 LinearLayout)不应更改内部 LinearLayout 的颜色,并且确实如此。

我已将android:duplicateParentState选项添加到我的内部 LinearLayout,其值为 ,false但问题仍然存在。

    <LinearLayout
        android:id="@+id/item_warning_level"
        android:layout_width="30dip"
        android:layout_height="match_parent"
        android:background="@drawable/selector_light_blue"
        android:duplicateParentState="false" />

有任何想法吗?

4

1 回答 1

0

您应该只将您的选择器设置为内部LinearLayout并从您的ListView. listView.setSelector(null)您可以通过调用或在 xml中删除它android:listSelector="@null"

于 2013-06-24T18:33:12.750 回答