在DrawerLayout中滚动时标题后面的项目列表

问题描述 投票:1回答:1

有人可以帮我解决这个问题吗?我不明白为什么向下滚动时我的项目列表为何在DrawerLayout的标题后面。

<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/drawer_layout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:fitsSystemWindows="true"
    tools:openDrawer="start">

    <include
        layout="@layout/activity_MainActivity"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

        <android.support.design.widget.NavigationView
            android:id="@+id/nav_view"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_gravity="start"
            android:background="#6b6b6b"
            android:fitsSystemWindows="true"
            android:theme="@style/NavigationTheme"
            app:headerLayout="@layout/format_appdrawerheader"
            app:itemBackground="@drawable/nav_view_item_background"
            app:itemTextColor="@drawable/nav_view_item_textcolor"
            app:menu="@menu/category_menu">

            <include layout="@layout/format_appdrawerheader" />

        </android.support.design.widget.NavigationView>

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

谢谢您的帮助

编辑:使用图片会更容易理解。

因此,当我启动应用程序时,我的NavigationView看起来像这样。较暗的部分是标题,较亮的部分是使用菜单创建的列表。当向下滚动时,只有较轻的部分在移动(这正是我想要的),但是它在页眉下方滑动。因此,如果我单击标题中的空白处,如第二张图片(红色框),它将选择后面的项目,在此示例中为“项目1”。

enter image description hereenter image description here

android header drawerlayout navigationview
1个回答
0
投票

Edit2

这些图片很有帮助。

您可以尝试将下一行添加到format_appdrawerheader.xml的顶部:

android:clickable="true"

应该将click事件捕获在标题中,以防止其继续到标题后面的视图。

下面,如果您要使用Android Studio中的默认导航抽屉活动,则将在该行中放置该行。您可能需要根据应用程序进行定制。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="@dimen/nav_header_height"
    android:background="@drawable/side_nav_bar"
    android:gravity="bottom"
    android:orientation="vertical"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:theme="@style/ThemeOverlay.AppCompat.Dark"
    android:clickable="true">
...

注意最后一行

我希望这会有所帮助。请让我知道。

编辑

另一个解决方案可能是删除此行:

<include layout="@layout/format_appdrawerheader" />

已经被引用了几行:

app:headerLayout="@layout/format_appdrawerheader"

原始答案

我尚未测试过,但是根据您的描述判断,您可能需要将NoActionBar主题添加到styles.xml和AndroidManifest.xml。

styles.xml:

<style name="AppTheme.NoActionBar">
        <item name="windowActionBar">false</item>
        <item name="windowNoTitle">true</item>
</style>

AndroidManifest.xml:

<activity
            android:name=".MainActivity"
            android:theme="@style/AppTheme.NoActionBar">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
</activity>

[请让我看看是否有帮助,或者遇到错误。我不知道您如何设置MainActivity.java。如果遇到有关ActionBar的NullPointerException,则必须对项目进行其他修改。如果您在Android Studio中启动新项目,则可以查看默认NavigationDrawer活动中的代码。除了styles.xml和AndroidManifest.xml,您还可以查看MainActivity.java中工具栏的引用方式以及app_bar_main.xml的设置方式。

© www.soinside.com 2019 - 2024. All rights reserved.