Search code examples
androidandroid-listviewnavigation-drawerandroid-appcompatclick-through

Android: Able to Click through the nav drawer?? AppCompat v7:r21


When I open my navigation drawer in an android app I created, I'm still able to click on list items in my main layout (The content layout). I mean, I am actually able to click on a ListView item through my navigation drawer. I don't have any clickable items in the navigation drawer yet, but I've put it in a proper FrameLayout with a white background. The content of the drawer, I am designing in a fragment. Here is my code:

activity_home.xml (MainActivity)

<android.support.v4.widget.DrawerLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/drawer_layout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@android:color/white"
    tools:context=".HomeActivity">

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <include
        android:id="@+id/toolbar_home"
        layout="@layout/my_awesome_toolbar" />

    <FrameLayout
        android:id="@+id/main_layout"
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <FrameLayout
            android:id="@+id/content_frame"
            android:layout_width="match_parent"
            android:layout_height="match_parent" />

        <ImageButton
            android:id="@+id/fab_addContact"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="end|bottom"
            android:layout_marginBottom="@dimen/view_margin_large"
            android:layout_marginEnd="@dimen/view_margin_large"
            android:layout_marginRight="@dimen/view_margin_large"
            android:background="@drawable/fab_button"
            android:contentDescription="@string/fab_contDesc"
            android:padding="@dimen/view_margin_large"
            android:src="@drawable/ic_add_white_24dp" />

    </FrameLayout>

</LinearLayout>

<FrameLayout
    android:id="@+id/drawer_frame"
    android:layout_width="300dp"
    android:layout_height="match_parent"
    android:layout_gravity="start"
    android:background="@android:color/white"
    android:clickable="true" />

</android.support.v4.widget.DrawerLayout>

fragment_drawer.xml (DrawerFragment to go into the @+id/drawer_frame )

<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@android:color/white"
    android:orientation="vertical">

<RelativeLayout
    android:layout_width="match_parent"
    android:layout_height="144dp">

    <ImageView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:scaleType="centerCrop"
        android:src="@drawable/material_design_wallpaper" />

    <ImageView
        android:id="@+id/iv_userThumbnail"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true"
        android:layout_alignParentTop="true"
        android:layout_margin="16dp"
        android:background="@drawable/display_pic_thumbnail"
        android:contentDescription="@string/contact_thumbnail" />

    <View
        android:layout_width="match_parent"
        android:layout_height="@dimen/view_margin_xx_large"
        android:layout_alignParentBottom="true"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true"
        android:background="@drawable/shadow" />

    <TextView
        android:id="@+id/tv_userName"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_above="@+id/tv_userEmail"
        android:layout_alignLeft="@+id/tv_userEmail"
        android:layout_alignStart="@+id/tv_userEmail"
        android:layout_marginBottom="@dimen/view_margin_small"
        android:text="Siddhant Chavlekar"
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:textColor="@android:color/white"
        android:textStyle="bold" />

    <TextView
        android:id="@+id/tv_userEmail"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true"
        android:layout_marginBottom="@dimen/view_margin_large"
        android:layout_marginLeft="@dimen/view_margin_large"
        android:layout_marginStart="@dimen/view_margin_large"
        android:text="[email protected]"
        android:textColor="@android:color/white" />

</RelativeLayout>

</LinearLayout>

Why is this happening? I'm using the AppCompat v7:r21 library to provide backwards compatibility for my Lollipop (Material Design) Apps.


Solution

  • So, I put the above mentioned line which is android:clickable="true" in my drawer_frame FrameLayout and so far I haven't come across any difficulties. Although, if I put it in my other layout, the bug still arises...

    So I guess the solution is to put android:clickable="true" in the layout which represents the drawer. (The layout with android:layout_gravity="start")