LinearLayout如何将onPressed事件传递给其子元素?

Eug*_*mak 2 events android selector

我有一个LinearLayout及其子 - ImageView.我的活动onCreate除了设置内容视图外什么都不做.内容视图的xml源代码如下所示:

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:gravity="center"
    android:orientation="vertical" >

    <LinearLayout
        android:layout_width="fill_parent"
        android:clickable="true"
        android:gravity="center"    
        android:background="@android:color/white"    
        android:layout_height="wrap_content" >

        <ImageView
            android:layout_width="140dp"
            android:layout_height="80dp"
            android:background="@android:color/darker_gray"
            android:clickable="true"
            android:src="@drawable/selector" />
    </LinearLayout>

</LinearLayout>
Run Code Online (Sandbox Code Playgroud)

@ drawable/selector的位置是:

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

    <item android:drawable="@drawable/foo1" android:state_pressed="true"/>
    <item android:drawable="@drawable/foo2"/>

</selector>
Run Code Online (Sandbox Code Playgroud)

案例1:我按ImageView.

案例2:我在ImageView之外按LinearLayout.

在第一种情况下,ImageView更改其src图像(从foo2到foo1),在第二种情况下,它不会更改任何内容.如何在第二种情况下使ImageView更改其src图像?

dan*_*h32 9

尝试设置

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

在你的孩子xml元素上.

  • 尝试在ImageView上将'clickable'设置为false,让LinearLayout处理所有点击事件,并在ImageView上保留'duplicateParentState'以保持两者同步. (3认同)