Панель навигации Android, охватывающая контент для просмотра

Я не могу остановить панель навигации системы от прикрытия моего контента!

Введите описание изображения здесь

Я прокручиваюсь до самой нижней части recyclerview, но его скрывается за навигационной панелью. Вот мой XML-макет.

<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:id="@+id/root" android:layout_width="match_parent" android:layout_height="match_parent" android:fitsSystemWindows="true"> <android.support.design.widget.AppBarLayout android:id="@+id/appbar" android:layout_width="match_parent" android:layout_height="wrap_content" android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"> <include layout="@layout/toolbar"/> <android.support.design.widget.TabLayout android:id="@+id/tabs" android:layout_width="match_parent" android:layout_height="wrap_content" /> </android.support.design.widget.AppBarLayout> <android.support.v4.view.ViewPager android:fitsSystemWindows="true" android:id="@+id/viewpager" android:layout_width="wrap_content" android:layout_height="wrap_content" app:layout_behavior="@string/appbar_scrolling_view_behavior" /> <com.melnykov.fab.FloatingActionButton android:id="@+id/fab" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="bottom|right" android:layout_margin="16dp" app:fab_colorNormal="@color/accent" app:fab_colorPressed="@color/accent_dark" /> 

Вот фрагмент фрагментов, который вы видите на картинке.

 <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:padding="8dp"> <android.support.v7.widget.RecyclerView android:id="@+id/recyclerView" android:layout_width="match_parent" android:layout_height="match_parent" android:scrollbars="vertical"/> </FrameLayout> 

Ive попытался добавить android: fitsSystemWindows = "true" в каждую часть макета, которую я мог бы, но это не сработало. В других разделах упоминается добавление маржи, вычисленной из бара, но это не похоже на правильное решение. Я захватил этот макет непосредственно из приложения CheesSquare от Google, используя приложение appbarlayout, и он выглядит как его работающий.

Solutions Collecting From Web of "Панель навигации Android, охватывающая контент для просмотра"

Корневой вид фрагмента Viewpager должен быть RecyclerView или NestedScrollView . FrameLayout не поддерживает прокручивание поведения CoordinatorLayout и поэтому он не работает.

Как вы можете исправить макет фрагмента viewpager: не FrameLayout RecyclerView внутри FrameLayout . Вместо этого объявите RecyclerView в корне. Вы также можете установить padding="8dp" на RecyclerView , просто используйте android:clipToPadding="false" .

Я понял. В моей конкретной ситуации каждый из моих фрагментов управляет собственным экземпляром панели инструментов. Я вызывал setSupportActionBar () в методе onViewCreated () на своих фрагментах. Перемещение этой функции в onCreateView () решило ее.

  @Nullable @Override public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { View view = inflater.inflate(R.layout.fragment_my_account, container, false); setupToolbar((Toolbar) view.findViewById(R.id.toolbar)); return view; } private void setupToolbar(Toolbar toolbar) { toolbarController.registerToolbar(toolbar); toolbarController.setActivityTitle("My Account"); } 

(RegisterToolbar () вызывает setSupportActionBar () внутри хостинга).

Надеюсь, это поможет всем!

Проблема заключается в использовании AppBarLayout . CoordinatorLayout был представлен как мощный FrameLayout который приносит приятную анимацию, основанную на определенных Behaviors . Если мы хотим добавить какую-то анимацию scroll , такую ​​как collapsing toolbar и т. Д., Тогда мы должны обернуть Toolbar AppBarLayout , но когда мы захотим разместить статический контент внутри CoordinatorLayout , например ViewPager в вашем случае, T нужно использовать AppBarLayout вообще:

activity_main.xml:

 <android.support.design.widget.CoordinatorLayout 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:layout_width="match_parent" android:layout_height="match_parent" android:fitsSystemWindows="true" tools:context="com.mydemoci.MainActivity"> <android.support.v7.widget.Toolbar android:id="@+id/toolbar" android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" android:background="?attr/colorPrimary" app:popupTheme="@style/AppTheme.PopupOverlay"/> <include layout="@layout/content_main"/> <android.support.design.widget.FloatingActionButton android:id="@+id/fab" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="bottom|end" android:layout_margin="@dimen/fab_margin" android:src="@android:drawable/ic_dialog_email"/> </android.support.design.widget.CoordinatorLayout> 

content_main.xml:

 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:background="#A1D490" // Remember CoordinatorLayout is a kind of FrameLayout, // so we have to provide top margin to make Toolbar visible android:layout_marginTop="?attr/actionBarSize" tools:context="com.mydemoci.MainActivity" tools:showIn="@layout/activity_main"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:layout_centerHorizontal="true" android:background="@color/colorAccent" android:text="Hello World" android:textSize="30sp"/> </RelativeLayout> 

Попробуйте заменить свою зависимость от градиента

 com.android.support:recyclerview-v7:22.0.+ 

с

 com.android.support:recyclerview-v7:22.2.0 

или

 com.android.support:recyclerview-v7:+ 

(Не уверен, что это правильная нотация)