CollapsingToolBarLayout 与 TabLayout 和 ViewPager

MrF*_*Foh 6 android android-fragments

来自应用程序的布局示例

我尝试使用 CordinatorLayout 和 CollapsingToolbarLayout、TabLayout 和 ViewPager 创建类似于图像中的布局。我的布局无法正确呈现。

这是我的布局

<?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"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:fitsSystemWindows="true">

    <android.support.design.widget.AppBarLayout
        android:id="@+id/app_bar_layout"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="?attr/colorPrimary"
        android:fitsSystemWindows="true">

        <android.support.design.widget.CollapsingToolbarLayout
            android:id="@+id/collapsing_toolbar"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            app:layout_scrollFlags="scroll|exitUntilCollapsed"
            app:contentScrim="?attr/colorPrimary"
            app:expandedTitleMarginStart="48dp"
            app:expandedTitleMarginEnd="64dp"
            android:fitsSystemWindows="true">

            <ImageView
                android:id="@+id/image"
                android:src="@drawable/thumb_placeholder"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:scaleType="centerCrop"
                android:fitsSystemWindows="true"
                app:layout_collapseMode="parallax"/>

            <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_collapseMode="pin" />

            <android.support.design.widget.TabLayout
                xmlns:android="http://schemas.android.com/apk/res/android"
                xmlns:app="http://schemas.android.com/apk/res-auto"
                android:id="@+id/movie_tabs"
                app:tabGravity="fill"
                app:tabMode="fixed"
                android:background="@color/colorPrimary"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                app:tabTextColor="@color/textColorPrimary"
                app:tabSelectedTextColor="@color/textColorPrimary"
                app:tabIndicatorColor="@color/textColorPrimary"
                app:tabIndicatorHeight="4dp"
                app:paddingStart="20dp"
                app:paddingEnd="20dp">
            </android.support.design.widget.TabLayout>

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

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

    <android.support.v4.view.ViewPager
        android:id="@+id/movieviewpager"
        android:layout_width="match_parent"
        android:layout_height="match_parent">

    </android.support.v4.view.ViewPager>

</android.support.design.widget.CoordinatorLayout>
Run Code Online (Sandbox Code Playgroud)

在我的设备上测试我得到这个 在此处输入图片说明在此处输入图片说明

如果有内容,ViewPager Fragment 会覆盖 TabLayout,当没有内容时,将 TabLayout 显示在 ImageView 之上。我做错了什么,我还是个 Android 菜鸟。

Kar*_*uri 4

  1. CollapsingToolbarLayout需要一个minHeight. 这告诉父母AppBarLayout它可以崩溃多少。我假设您希望ToolbarTabLayout留在屏幕顶部(因为您正在使用exitUntilCollapsed滚动标志)。我会让这两个都具有android:layout_height="?attr/actionBarSize"并使用该值的两倍作为minHeightCollapsingToolbarLayout

  2. ViewPager需要app:layout_behavior="@string/appbar_scrolling_view_behavior"