6

Когда я открываю свой ящик навигации в приложении Android, которое я создал, я все еще могу щелкнуть элементы списка в своем основном макете (макет содержимого). Я имею в виду, я на самом деле могу нажать на ListView пункт через мой навигационный ящик. В ящике навигации еще нет элементов для клики, но я положил их на правильный FrameLayout с белым фоном. Содержимое ящика, я проектирую в фрагменте. Вот мой код:Android: можно щелкнуть через навигационный ящик? AppCompat v7: r21

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 идти в @+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> 

Почему это происходит? Я использую библиотеку AppCompat v7:r21 для обеспечения обратной совместимости для своих приложений Lollipop (Material Design).

+0

У меня был такой опыт перед выпуском android 21, я решил его, добавив эту строку в мои макеты внутри DrawerLayout 'android: clickable =" true "' – k0sh

+0

@ k0sh так добавить его ко всем макетам внутри моего DrawerLayout или только ящика? – SynerFlow

+0

Нет, вы добавляете его в макеты, которые находятся внутри drawerlayout, за исключением макета, который будет удерживать дочерние элементы ящика. – k0sh

ответ

13

Итак, я поставил вышеприведенную строку, которая android:clickable="true" в моем drawer_frame FrameLayout, и до сих пор я не сталкивался с какими-либо затруднениями. Хотя, если я поместил его в другую компоновку, ошибка все равно возникает ...

Так что я думаю, решение состоит в том, чтобы положить android:clickable="true" в макет, который представляет ящик. (Схема с android:layout_gravity="start")

Смежные вопросы