Фрагмент из View Pager, скрывающийся за Tab Bar

У меня проблема с панелью вкладок и ViewPager в моем проекте Android. В приложении у него есть активность, в которой размещается макет вкладки, а затем есть 2 фрагмента, который представляет каждую вкладку.

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

Рециклирующее представление будет содержать 3 элемента, но только 2 показаны, поскольку первый скрывается под панелью инструментов и/или панель вкладок, как показано на скриншоте ниже.

Ниже представлен файл макета моей активности

<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    tools:context="com.BoardiesITSolution.CritiMonApp.AppsActivity">

    <android.support.design.widget.AppBarLayout
        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"
            app:tabMode="fixed"
            app:tabGravity="fill" />
    </android.support.design.widget.AppBarLayout>

    <android.support.v4.view.ViewPager
        android:id="@+id/viewpager"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />
        <!--app:layout_behaviour="@string/appbar_scrolling_view_behaviour" />-->
</android.support.design.widget.CoordinatorLayout>

Ниже представлена ​​компоновка фрагмента

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <view
        android:id="@+id/recycler_view"
        class="android.support.v7.widget.RecyclerView"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_centerInParent="true" />
</LinearLayout>

Ниже приведен макет для размещения карты

<android.support.v7.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:cardview="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="80dp"
    android:layout_margin="8dp">

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="80dp"
        android:elevation="5dp">
        <TextView
            android:id="@+id/txtApplicationName"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_centerVertical="true"
            android:maxLines="3"
            android:padding="8dp"
            android:textColor="#222"
            android:textSize="15dp"
            android:layout_centerInParent="true"/>

    </RelativeLayout>
</android.support.v7.widget.CardView>

Ниже приведен скриншот, как указано выше, в котором показана проблема. Я пикселирую часть текста, но это должно означать, что должно быть 3 элемента, но первый элемент скрывается под панелью вкладок.

Снимок экрана, показывающий проблему

Спасибо за любую помощь, которую вы можете предоставить

Ответ 1

Изменить. Как показано ниже @smeet и @hardik, добавление поведения прокрутки app:layout_behavior="@string/appbar_scrolling_view_behavior" должно устранить проблему, сохранив поведение прокрутки. Поведение свитков работает только в том случае, если представление является прямым дочерним положением координатора.


Старый ответ

Просто оберните свой макет панели приложений и просмотрщик в вертикальном LinearLayout

<android.support.design.widget.CoordinatorLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    tools:context="com.BoardiesITSolution.CritiMonApp.AppsActivity">

    <LinearLayout
        android:orientation="vertical"
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        //appbar layout

        //viewpager    


    </LinearLayout>

</android.support.design.widget.CoordinatorLayout>

В документах CoordinatorLayout is a super-powered FrameLayout. Таким образом, вы можете ожидать типичные "взгляды на вид сверху поверх других представлений" в режиме FrameLayout.

Ответ 2

Добавление:

Приложение: layout_behavior = "@строка/appbar_scrolling_view_behavior"

в ViewPager проблема разрешена в моем случае.

Ответ 3

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

Smeet сделал правильный путь, но не объяснил! вот полный пример с объяснением.

добавить app namspace в CoordinatorLayout

<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout
xmlns:app="http://schemas.android.com/apk/res-auto"
......
>

и просто добавьте строку ниже в ViewPager

app:layout_behavior="@string/appbar_scrolling_view_behavior"

полный xml будет ниже

<?xml version="1.0" encoding="utf-8"?>
<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.support.design.widget.AppBarLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:theme="@style/AppTheme.AppBarOverlay">

        <android.support.v7.widget.Toolbar
            android:id="@+id/toolbar"
            android:layout_width="match_parent"
            android:layout_height="?attr/actionBarSize"
            android:background="?attr/colorPrimary"
            app:layout_scrollFlags="scroll|enterAlways"
            app:popupTheme="@style/AppTheme.PopupOverlay" />

        <android.support.design.widget.TabLayout
            android:id="@+id/tabLayout"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"

            />

    </android.support.design.widget.AppBarLayout>

    <android.support.v4.view.ViewPager
        android:id="@+id/viewPager"
        android:layout_width="match_parent"
        app:layout_behavior="@string/appbar_scrolling_view_behavior"
        android:layout_height="match_parent" />


</android.support.design.widget.CoordinatorLayout>