点击具有子元素的LinearLayout(其android:duplicateParentState =“ true”)不会触发函数

4

我的布局XML如下:

<LinearLayout 
        android:id="@+id/leftBtnWrapper"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:paddingRight="25dp"
        android:clickable="true"
        android:orientation="horizontal"
        android:gravity="center_vertical"
        android:layout_alignParentLeft="true"
        android:layout_centerVertical="true">

        <LinearLayout 
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_margin="10dp"
            android:orientation="vertical"
            android:gravity="center"
            android:duplicateParentState="true">

        <ImageView 
            android:id="@+id/leftImageBtn"
            android:layout_width="wrap_content"         
            android:layout_height="wrap_content"
            android:background="@drawable/btn_navbar"
            android:layout_gravity="center_vertical"
            android:padding="0dp"
            android:clickable="true"
            android:duplicateParentState="true"/>

        </LinearLayout>

         <View 
            android:layout_width="1.5dp"
            android:layout_height="match_parent"
            android:background="@drawable/ver_separator"
            android:layout_marginLeft="1dip"
            android:duplicateParentState="true"/>

我希望在单击leftBtnWrapper时触发一个函数。但是,当我触摸leftImageBtn ImageView的任何部分时,它不会触发我的函数。有什么线索我错过了吗?

编辑::

通过在左上角取framelayout并应用frameLayout的onClick来解决问题。 布局如下::

<LinearLayout
        android:id="@+id/leftBtnWrapper"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:layout_alignParentLeft="true"
        android:layout_centerVertical="true"
        android:clickable="true"
        android:gravity="center_vertical"
        android:orientation="horizontal" >

            <ImageView
                android:id="@+id/leftImageBtn"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="center_vertical"
                android:background="@drawable/btn_navbar"
                android:clickable="true"
                android:duplicateParentState="true"
                android:layout_margin="8dp" />


        <View
            android:layout_width="1.5dp"
            android:layout_height="match_parent"
            android:background="@drawable/ver_separator"
            android:duplicateParentState="true" />
    </LinearLayout>

    <FrameLayout
        android:id="@+id/leftBtnLayer"
        android:layout_width="70dp"
        android:layout_height="match_parent"
        android:layout_alignParentLeft="true"
        android:background="@android:color/transparent"
        android:clickable="true" >
    </FrameLayout>
1个回答

3
如果你想在单击leftBtnWrapper时触发一个函数,为什么不直接向leftBtnWrapper添加以下内容呢?
android:clickable="true"
android:onClick="functionName"

并删除

android:clickable="true"

从所有子布局中获取。


感谢您的帮助...我通过在左侧使用FrameLayout并将onClick操作与FrameLayout绑定来解决了问题。我已经编辑了上面的问题。 - hemu

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