Intereting Posts
Как импортировать приложения AOSP (запуск, контакты, …) в Android-Studio? Изменить цвет текста в android.R.layout.simple_list_item_2 Как я могу автоматически активировать активность настроек Bluetooth? Android Nexus One – Могу ли я экономить энергию с помощью цветовой схемы? Как я могу взаимодействовать с макетом Lockscreen, чтобы отображать в нем текст, например это приложение: Обработка сеанса входа в facebook sdk в android Android: расшифровать текст RSA с помощью открытого ключа, хранящегося в файле Запретить фильтр сеанса LogCat от кражи фокуса Как использовать FFT для фильтрации шума 50 Гц из массива данных? Невозможно импортировать facebook-sdk 4.0.1 Является ли класс «Globals», в котором хранятся статические переменные в Android? Запись, сохранение и воспроизведение видео в Android Как включить открытый ключ RSA в Google Play Services в моем бинарном приложении Android? SHA-1 отпечаток клеверного сертификата Диалог Android с меню

Настройка дополнения к панели навигации в Android

У меня есть активность, которая содержит DrawerLayout и NavigationView из библиотеки поддержки. Я устанавливаю макет заголовка в навигационное представление, и я хочу, чтобы высота заголовка навигации была «wrap_content». Поэтому, когда я устанавливаю высоту в «wrap_content», макет заголовка выходит за панель состояния.

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

Ниже приведен снимок экрана о том, что я получаю. Обратите внимание на кнопку «SIGN IN», идущую за панель состояния.

Скриншот

Схема действий

<android.support.v4.widget.DrawerLayout 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="match_parent" android:id="@+id/nav_drawer" android:fitsSystemWindows="true"> <android.support.design.widget.CoordinatorLayout android:layout_width="match_parent" android:layout_height="match_parent"> <android.support.v4.view.ViewPager android:id="@+id/view_pager" android:layout_width="match_parent" android:layout_height="wrap_content" app:layout_behavior="@string/appbar_scrolling_view_behavior"></android.support.v4.view.ViewPager> <android.support.design.widget.AppBarLayout android:layout_width="match_parent" android:layout_height="wrap_content"> <include layout="@layout/include_toolbar"/> <android.support.design.widget.TabLayout app:theme="@style/ThemeOverlay.AppCompat.Dark" style="@style/MyCustomTabLayout" android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/tabs" /> </android.support.design.widget.AppBarLayout> </android.support.design.widget.CoordinatorLayout> <android.support.design.widget.NavigationView android:id="@+id/navigation_view" android:layout_width="wrap_content" android:layout_height="match_parent" app:headerLayout="@layout/nav_header" app:menu="@menu/menu_navigation" android:fitsSystemWindows="true" android:layout_gravity="start"/> </android.support.v4.widget.DrawerLayout> 

Макет структуры заголовка навигации

 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="?attr/colorPrimaryDark" android:padding="16dp" android:theme="@style/ThemeOverlay.AppCompat.Dark" android:orientation="vertical" android:fitsSystemWindows="true" android:gravity="bottom"> <TextView android:visibility="gone" android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/text_user_name" android:textAppearance="@style/TextAppearance.AppCompat.Body1"/> <TextView android:visibility="gone" android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/text_email" android:textAppearance="@style/TextAppearance.AppCompat.Body2"/> <Button android:id="@+id/button_sign_in" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Sign In"/> </LinearLayout> 

Я искал через StackOverflow решение, но не смог его найти. Поэтому кто-то прольет свет. Заранее спасибо.

Solutions Collecting From Web of "Настройка дополнения к панели навигации в Android"

 <android.support.design.widget.NavigationView android:id="@+id/navigation_view" android:layout_width="wrap_content" android:layout_height="match_parent" app:headerLayout="@layout/nav_header" app:menu="@menu/menu_navigation" android:fitsSystemWindows="false" android:layout_gravity="start"/> 

андроид: fitsSystemWindows = "ложь"

И CoordinatorLayout => android: fitsSystemWindows = "false"

Возможным решением является использование dimens.xml :

Заголовок для API 19 и ниже: res / values /dimens.xml

 <resources> .... <dimen name="navigation_header_height">150dp</dimen> <dimen name="navigation_header_top_padding">0dp</dimen> </resources> 

Заголовок для API 21 и выше: res / values-v21 /dimens.xml

 <resources> .... <dimen name="navigation_header_height">174dp</dimen> <dimen name="navigation_header_top_padding">24dp</dimen> </resources> 

Заголовок примера: res / layout /nav_header.xml

 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="240dp" android:layout_height="@dimen/navigation_header_height" android:paddingTop="@dimen/navigation_header_top_padding" android:background="@color/primary" android:orientation="vertical"> // Header's views goes here </LinearLayout>