Android DrawerLayout 覆盖背景 ListView
Android DrawerLayout overlays background ListView
使用 ListView 和 Navigation Drawer 获得 activity,不幸的是,它覆盖了我的 ListView,我不能像 'onItemSelected' 那样与它进行任何交互。
但是
每当我将 DrawerLayout 更改为不覆盖整个 activity 而只是
一小块,.
下面是我的布局代码:
<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>
我无法在任何地方找到答案,我相信这只是一个简单的问题。
你的列表视图不工作的原因是因为你把它放在底层,你在它上面放了一个抽屉所以抽屉在列表视图上面并且抽屉设置为 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。希望这将有助于you.Try 使导航抽屉的片段变得简单。
我想我刚刚找到了一个 solution/workaround 来解决我的问题。我没有将抽屉布局放在 TextView 或 ListView 等其他组件之间,而是使用了由 @neelay-srivastava 链接的 tutorial 并创建了新的 class + 布局,内部只有一个 DrawerLayout。然后将我所有的活动更改为碎片。它有效。
For futher users with same problem just remember to do not nest DrawerLayout in another activity layout between other components.
使用 ListView 和 Navigation Drawer 获得 activity,不幸的是,它覆盖了我的 ListView,我不能像 'onItemSelected' 那样与它进行任何交互。
但是
每当我将 DrawerLayout 更改为不覆盖整个 activity 而只是 一小块,.
下面是我的布局代码:
<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>
我无法在任何地方找到答案,我相信这只是一个简单的问题。
你的列表视图不工作的原因是因为你把它放在底层,你在它上面放了一个抽屉所以抽屉在列表视图上面并且抽屉设置为 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。希望这将有助于you.Try 使导航抽屉的片段变得简单。
我想我刚刚找到了一个 solution/workaround 来解决我的问题。我没有将抽屉布局放在 TextView 或 ListView 等其他组件之间,而是使用了由 @neelay-srivastava 链接的 tutorial 并创建了新的 class + 布局,内部只有一个 DrawerLayout。然后将我所有的活动更改为碎片。它有效。
For futher users with same problem just remember to do not nest DrawerLayout in another activity layout between other components.