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

1

7

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.

Cerebrum answered 9/11, 2014 at 2:26 Comment(4)
i had this kind of experience before even the release of android 21, i have solved it by adding this line to my layouts inside the DrawerLayout android:clickable="true"Ripply
@k0sh so do I add it to all the layouts inside my DrawerLayout or just the drawer?Cerebrum
Nope, you add it to the layouts that are inside the drawerlayout except the layout thats gonna hold the drawer childsRipply
@k0sh Hey, I added the line to my drawer_frame and everything seems to work fine.. So I guess both ways work huh? Is there any danger in adding it to your drawer??Cerebrum
C
15

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

Cerebrum answered 10/11, 2014 at 3:56 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.