怎么做才能使可点击的父母而不是孩子?

时间:2018-02-07 10:48:02

标签: android android-layout

这是我的XML

<android.support.v7.widget.CardView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_margin="4dp">

        <LinearLayout
            android:id="@+id/commander_image_selector"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:gravity="center"
            android:orientation="vertical"
            android:background="?attr/selectableItemBackground"
            android:padding="15dp">

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:paddingBottom="15dp"
                android:paddingEnd="15dp"
                android:paddingLeft="15dp"
                android:paddingRight="15dp"
                android:paddingStart="15dp"
                android:text="@string/image_chooser_txt"
                android:textAlignment="center" />

            <ImageView
                android:id="@+id/commander_result_image"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginLeft="20dp"
                android:layout_marginRight="20dp"
                android:minHeight="150dp"
                android:minWidth="200dp"
                android:padding="5dp"
                android:scaleType="centerInside"
                android:src="@mipmap/default_image"
                android:contentDescription="@string/chosen_image" />
        </LinearLayout>
    </android.support.v7.widget.CardView>

我想设置android:background =&#34;?attr / selectableItemBackground&#34;在LinearLayout上,如果我点击它或在imageView上。

有什么解决方案吗?它就像指针事件:css

中没有

2 个答案:

答案 0 :(得分:0)

默认情况下,LinearLayout不可点击,也不会接收触摸事件。您可以简单地指出您的LinearLayout应该是可点击的,而您的ImageView不是通过添加:

<LinearLayout
        android:id="@+id/commander_image_selector"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:gravity="center"
        android:orientation="vertical"
        android:background="?attr/selectableItemBackground"
        android:padding="15dp"
        android:focusable="true"
        android:clickable="true">

          <ImageView
            android:focusable="false"
            android:clickable="false"
            />
       />

答案 1 :(得分:0)

修改

<android.support.v7.widget.CardView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_margin="4dp">
    <LinearLayout
        android:id="@+id/commander_image_selector"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:addStatesFromChildren="true"
        android:background="?attr/selectableItemBackground"
        android:gravity="center"
        android:orientation="vertical"
        android:padding="15dp">
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:paddingBottom="15dp"
            android:paddingEnd="15dp"
            android:paddingLeft="15dp"
            android:paddingRight="15dp"
            android:paddingStart="15dp"
            android:text="@string/image_chooser_txt"
            android:textAlignment="center" />
        <ImageView
            android:id="@+id/commander_result_image"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="20dp"
            android:layout_marginRight="20dp"
            android:contentDescription="@string/chosen_image"
            android:minHeight="150dp"
            android:minWidth="200dp"
            android:padding="5dp"
            android:scaleType="centerInside"
            android:src="@mipmap/default_image" />
    </LinearLayout>
</android.support.v7.widget.CardView>

使用android:addStatesFromChildren =&#34; true&#34;,selectableItemBackground适用于儿童。然后我只需要以编程方式设置我的imageView不可点击(不能在xml中工作)它就像我想要的那样