Android 在抽屉布局中滚动时标题后面的项目列表

Android 在抽屉布局中滚动时标题后面的项目列表,android,header,drawerlayout,navigationview,Android,Header,Drawerlayout,Navigationview,有人能帮我修一下吗?当我向下滚动时,我不明白为什么我的项目列表会在抽屉布局的标题后面 <?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"

有人能帮我修一下吗?当我向下滚动时,我不明白为什么我的项目列表会在抽屉布局的标题后面

<?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>

Edit2

这些图片很有用

您可以尝试将下一行添加到格式_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">
...
原始答案

我还没有测试它,但是根据您的描述,您可能需要将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活动中的代码。除了style.xml和AndroidManifest.xml之外,您还可以查看MainActivity.java中工具栏的引用方式以及app_bar_main.xml的设置方式。

问题出在哪里?当滚动时,则项目位于标题后面是正常行为。你还想要什么?问题不在于项目在标题后面,而在于即使它们不可见,它们仍然可以单击。第一部分不起作用。如果我删除了“includelayout”一行,当我滚动时,我的所有布局都在移动(我只希望底部部分移动)。如果我删除“appheaderlayout”行,则包含类别的所有底部部分都从抽屉顶部开始,在标题后面。通过使用这两行,标题不会移动,类别部分在标题之后开始。这很有效。但是,当我向下滚动时,底部会滑到标题后面。如果我点击标题中的空白处,它会捕捉到标题后面不可见的类别。我只是发现了这一点,但滚动条从标题开始,这是无用的。它应该从底部开始,以代表现实。我将添加一些屏幕截图,这将很容易理解。对于第二部分,我不能声明“NoActionBar”,我的活动中有一个,它是我应用程序的战略部分。我不认为动作栏和我的问题有任何关系(或者可能我不了解动作栏的工作原理,这是可能的,因为我在这方面的技能…)图片很有帮助。请尝试我的新解决方案。
<style name="AppTheme.NoActionBar">
        <item name="windowActionBar">false</item>
        <item name="windowNoTitle">true</item>
</style>
<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>