Android DrawerLayout覆盖背景ListView

时间:2016-10-01 13:23:28

标签: android listview drawerlayout

使用ListView和导航抽屉进行活动,遗憾的是我的ListView覆盖了我,而且我无法进行任何类似的活动,例如onItemSelected'用它。

That's how it looks like:

但是

每当我将DrawerLayout更改为不覆盖整个活动而只是 一小块,。

onitemSelect is working

在我的布局代码下方

 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:paddingBottom="@dimen/activity_vertical_margin"
        android:paddingLeft="@dimen/activity_horizontal_margin"
        android:paddingRight="@dimen/activity_horizontal_margin"
        android:paddingTop="@dimen/activity_vertical_margin"
        tools:context="marcin.chruscicki.notefication.MainActivity"
        android:background="@color/universalBackground_DarkGray">

        ...

     <ListView
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:id="@+id/notesListView"
        android:stackFromBottom="false"
        android:layout_alignParentStart="true"
        android:layout_above="@+id/versionTxtView" />


     <android.support.v4.widget.DrawerLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/drawer_layout"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:fitsSystemWindows="true"
        >
        <!-- The main content view -->
        <FrameLayout
            android:id="@+id/content_frame"
            android:layout_width="match_parent"
            android:layout_height="match_parent" />
        <!-- The navigation drawer -->
        <ListView android:id="@+id/left_drawer"
            android:layout_width="140dp"
            android:layout_height="match_parent"
            android:layout_gravity="start"
            android:divider="@android:color/transparent"
            android:dividerHeight="0dp"
            android:background="#262626" />

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

        ...

    </RelativeLayout>

我无法在任何地方找到答案,我确信这只是一个简单的问题。

2 个答案:

答案 0 :(得分:2)

我想我刚刚为我的问题找到了解决方案/解决方法。我没有将Drawer Layout放在TextView或ListView等其他组件之间,而是使用@ neelay-srivastava链接的tutorial,并在里面单独创建了DrawerLayout的新类+布局。然后将我的所有活动都改为碎片。它有效。

  

对于有相同问题的其他用户,请记住不要将DrawerLayout嵌套在其他组件之间的其他活动布局中。

答案 1 :(得分:1)

列表视图不起作用的原因是因为你把它放在底层并在它上面你放置了一个抽屉,所以抽屉在列表视图上方,抽屉设置为match_parent

 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="marcin.chruscicki.notefication.MainActivity"
    android:background="@color/universalBackground_DarkGray">

    ...

 <android.support.v4.widget.DrawerLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/drawer_layout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:fitsSystemWindows="true"
    >
    <!-- The main content view -->
   <android.support.design.widget.NavigationView
    android:layout_width="240dp"
    android:layout_height="match_parent"
    android:id="@+id/nav"/> 

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

    ...


<ListView
    android:layout_width="wrap_content"
    android:layout_height="match_parent"
    android:id="@+id/notesListView"
    android:stackFromBottom="false"
    android:layout_alignParentStart="true"
    android:layout_above="@+id/versionTxtView" />

</RelativeLayout>

尝试按照放置列表视图,当您在布局中创建一个项目时,它会一个接一个地放置,这意味着您最后放置项目将位于前面 你需要在片段布局中制作导航抽屉listviw。这是一个完整的例子,你可以做fragment example .hope这将对你有所帮助。试着为导航抽屉制作一个片段很容易。