View从其父级获取其可绘制状态(按下等)

gwv*_*eri 6 android css-selectors android-layout

我有一个ListView,其中每个列表项是基于RelativeLayout的自定义布局,它是可点击的,它有一个自定义选择器.En plus,它有一个sub-RelativeLayout,它也是可点击的,它有自己的选择器.

像这样的东西:

 ---------------
|               |
|         ___   |
|        |   |  |
 ---------------
Run Code Online (Sandbox Code Playgroud)

一切都很完美,但问题是,当我点击父相对布局时,子选择器会假定父选择器的状态.我试着设定

android:duplicateParentState="false"
Run Code Online (Sandbox Code Playgroud)

关于孩子但没有任何改变.

任何的想法?提前致谢

TAC*_*TAC 2

你能展示一下ListView的项目和选择器的代码吗?在我看来,你在实施时犯了一些错误。这是我的项目及其选择器的示例。这对我来说可以:

视频,我的实现是如何工作的>点击打开<

列表视图项目.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>
Run Code Online (Sandbox Code Playgroud)

相对选择器.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>
Run Code Online (Sandbox Code Playgroud)

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>
Run Code Online (Sandbox Code Playgroud)