Intereting Posts
Обнаружение события касания кнопок навигации внутри службы, имеющей окно Android – Сигнал 11, ошибка RS CPP: радиус размытия из 0-25 пикселей Почему класс StringUtils Apache не распознается в Android? Платформа Android: отличия большого размера 800×480 от планшета 1024×600 Не удалось включить аппаратные кнопки AVD Java.lang.IllegalStateException: Не удалось прочитать строку x col x из CursorWindow. Убедитесь, что курсор инициализирован правильно. Контакты Ошибка кодирования видео с использованием данных OnAudioFilterRead Удаленная служба Android в приложении против отдельного приложения Ориентация / разработка для нескольких мобильных платформ с одним языком программирования (C #)? Затрат и выгод? В Android, как я плавно увядает фон от одного цвета к другому? (Как использовать потоки) Как установить android: layout_weight и android: layout_width в коде? Целевая кнопка меню сотового андроида Вопросы об использовании Android Backup Service с базой данных SQLite Drag n drop textview в android OnCreateViewHolder RecyclerView.Adapter вызывается дважды или более, несколько раз

Нижняя мягкая навигационная панель перекрывает мой ListView

Я запустил приложение на Nexus 5 (Android 5), но столкнулся с проблемой, что мягкая навигационная панель внизу перекрывает последний элемент моего ListView. Я попытался добавить fitsSystemWindows в свой стиль и ListView, но это не сработало.

XML моего макета:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:background="@color/sf4l" android:layout_width="fill_parent" android:layout_height="fill_parent"> <ListView android:id="@id/android:list" android:layout_width="match_parent" android:layout_height="fill_parent" android:layout_weight="1" android:background="@color/sf4l" /> </LinearLayout> 

Solutions Collecting From Web of "Нижняя мягкая навигационная панель перекрывает мой ListView"

Добавьте это в свои темы. Xml в каталоге значений-v21:

 <item name="android:windowDrawsSystemBarBackgrounds">false</item> 

Пример (я использую AppCompat для панелей действий):

 <style name="Theme" parent="Theme.AppCompat.Light.DarkActionBar"> <item name="homeAsUpIndicator">@drawable/new_indicator</item> <item name="android:homeAsUpIndicator">@drawable/new_indicator</item> <item name="actionModeBackground">@android:color/black</item> <item name="android:windowDrawsSystemBarBackgrounds">false</item> </style> 

Это потому, что высота вашего спискаView равна высоте полного экрана, но панель действий отталкивает макет на несколько пикселей ниже, что приводит к перекрытию макета с помощью кнопок навигации.

Это также происходит, если в панели действий есть полноэкранный фрагмент.

Исправить это, чтобы измерить высоту экрана и панели действий, а затем установить высоту вашего родительского представления в зависимости от его разницы. Пример:

 @Override public void onWindowFocusChanged (boolean hasFocus) { LinearLayout lMain = (LinearLayout) findViewById(R.id.lMain); lMain.getLayoutParams().height = lMain.getHeight() - getNavigationBarHeight(); } 
  • Вы должны сделать это после того, как макет уже нарисован / отображен. В onCreate или onResume слишком рано. Это можно сделать в onWindowFocusChanged (), возможно, слишком много, но это работает.