hemu
hemu

Reputation: 3261

OnClick on LinearLayout with childs (having android:duplicateParentState="true") doesn't trigger the function

My layout XML is as follow :

<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"/>

I want to trigger a function on click of leftBtnWrapper. But when I touch on any part of leftImageBtn ImageView, it doesn't trigger my function. Any clue what I am missing ??

EDIT::

Solved by taking framelayout on left corner & applying onClick of frameLayout. Layout is as follow ::

<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>

Upvotes: 4

Views: 3799

Answers (1)

Aditya Kushwaha
Aditya Kushwaha

Reputation: 837

If you want to trigger a function on click of leftBtnWrapper entirely, why dont you just add the following to your leftBtnWrapper

android:clickable="true"
android:onClick="functionName"

and remove

android:clickable="true"

from all the child layouts.

Upvotes: 3

Related Questions