视图的可绘制状态(按下等)来自于其父级。

8
我有一个ListView,其中每个列表项都是基于RelativeLayout的自定义布局,它可点击并具有自定义选择器。另外,它有一个子RelativeLayout,也可点击,并具有自己的选择器。
类似下面这样:
 ---------------
|               |
|         ___   |
|        |   |  |
 ---------------

一切都运行得很完美,但问题在于当我点击父相对布局时,子选择器会假定父选择器的状态。我尝试设置

android:duplicateParentState="false"

对孩子进行操作,但是没有任何变化。

有什么想法吗?提前感谢。

1个回答

2
请展示你的ListView项和选择器代码吧?我认为你在实现时犯了一些错误。这是我的项和其选择器的示例,对我来说很好用: 视频,我的实现如何运作 >点击此处打开< list_view_item.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:padding="40dp"
    android:background="@drawable/relative_selector">

    <RelativeLayout
        android:layout_width="300dp"
        android:layout_height="100dp"
        android:background="@drawable/child_selector_1"
        android:clickable="true">

        <RelativeLayout
            android:layout_width="100dp"
            android:layout_height="100dp"
            android:layout_centerHorizontal="true"
            android:background="@drawable/child_selector_2"
            android:clickable="true"/>
    </RelativeLayout>
</RelativeLayout>

relative_selector.xml

<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_pressed="true">
        <inset xmlns:android="http://schemas.android.com/apk/res/android">
            <shape android:shape="rectangle">
                <solid android:color="@android:color/holo_blue_bright" />
            </shape>
        </inset>
    </item>
</selector>

child_selector_1.xml

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

    <!-- pressed state -->
    <item android:state_pressed="true">
        <inset xmlns:android="http://schemas.android.com/apk/res/android">
            <shape android:shape="rectangle">
                <solid android:color="@android:color/holo_orange_dark" />
            </shape>
        </inset>
    </item>

    <!-- focused state -->
    <item android:state_focused="true">
        <inset xmlns:android="http://schemas.android.com/apk/res/android">
            <shape android:shape="rectangle">
                <solid android:color="@android:color/holo_orange_dark" />
            </shape>
        </inset>
    </item>

    <!-- normal state -->
    <item>
        <inset xmlns:android="http://schemas.android.com/apk/res/android">
            <shape android:shape="rectangle">
                <solid android:color="@android:color/holo_red_dark" />
            </shape>
        </inset>
    </item>
</selector>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接