Список элементов за заголовком при прокрутке в DrawerLayout - PullRequest
1 голос
/ 18 октября 2019

Может кто-нибудь помочь мне это исправить? Я не понимаю, почему мой список элементов идет за заголовком моего 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>

Спасибо за вашу помощь

РЕДАКТИРОВАТЬ: это будет легче понять сpicture.

Итак, когда мое приложение запущено, NavigationView выглядит следующим образом. Более темная часть - заголовок, а более светлая - список, составленный из меню. Когда прокручивается вниз, движется только более светлая часть (это именно то, что я хочу), но она скользит под заголовком. Поэтому, если я нажимаю на пустое место в моем заголовке, как на втором рисунке (рамка красного цвета), он выбирает элемент позади, в данном примере, «Элемент 1».

enter image description here enter image description here

1 Ответ

1 голос
/ 18 октября 2019

Edit2

Фотографии полезны.

Вы можете попробовать добавить следующую строку в верхнюю часть вашего format_appdrawerheader.xml:

android:clickable="true"

Он должен перехватывать событие щелчка в заголовке, предотвращая его продолжение до представления за заголовком.

Ниже я покажу, куда поместить эту строку, если вы будете использовать задание по умолчанию для Навигационной панели. от 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.xmland 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. Если вы столкнетесь с NullPointerException в отношении ActionBar, вам придется внести дополнительные изменения в ваш проект. Вы могли бы взглянуть на код в NavigationDrawer Activity по умолчанию, если вы начинаете новый проект в Android Studio. В дополнение к styles.xml и AndroidManifest.xml вы можете посмотреть, как на панель инструментов ссылаются в MainActivity.java и как настроен app_bar_main.xml.

...