android 中带有选项卡的 CoordinatorLayout?

CoordinatorLayout with Tabs in android?

我是 CoordinatorLayout 的新手,我想在我的应用程序中使用 coordinatorLayout,但它会导致显示 CollapsingToolbarLayout 视图出现问题。

我想在 Coordinatorlayout

中设计类似 whatsApp 屏幕的视图 Tabs

我的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/main_content"
    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="@dimen/detail_backdrop_height"
        android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar">


        <android.support.design.widget.CollapsingToolbarLayout
            android:id="@+id/collapsing_toolbar"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:fitsSystemWindows="false"
            app:contentScrim="?attr/colorPrimary"
            app:expandedTitleMarginEnd="32dp"
            app:expandedTitleMarginStart="24dp"
            app:layout_scrollFlags="scroll|exitUntilCollapsed">


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

                <android.support.v7.widget.Toolbar
                    android:id="@+id/toolbar"
                    android:layout_width="match_parent"
                    android:layout_height="?attr/actionBarSize"
                    app:layout_collapseMode="pin"
                    app:popupTheme="@style/ThemeOverlay.AppCompat.Light">

                </android.support.v7.widget.Toolbar>
            </LinearLayout>

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

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

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


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

  <android.support.v4.widget.NestedScrollView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        app:layout_behavior="@string/appbar_scrolling_view_behavior">

        // child view

    </android.support.v4.widget.NestedScrollView>

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

我在 CoordinatorLayout 中找到了选项卡的解决方案

<?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:id="@+id/tabanim_maincontent"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <android.support.design.widget.AppBarLayout
        android:id="@+id/tabanim_appbar"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar">

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

        </android.support.v7.widget.Toolbar>

         /***
                   Here You can add custom layout
                 **/


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

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

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


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

"but it cause some problem in display" 没有说你遇到了什么样的问题,很高兴你找到了解决方案。

在使用 fitsSystemWindows="true" 时,CoordinatorLayout 中的 TabLayout 和 ViewPager 支持库在 22.2.1 和 23.0.1 中确实存在问题。使用 RecyclerView 并将其向上滚动时,TabLayout header 进入状态栏,而它的背景颜色未被固定。

我可能只是暗示以上是你的问题之一,如果是,那么删除 fitsSystemWindows 并不是最好的解决方案,因为应用程序在 5.0+ 中会失去很多外观 Android.

这也不是很好的解决方案,但我通过添加嵌套 android.support.design.widget.CoordinatorLayout 设法解决了这个问题,但如果您在那里使用 DrawerLayout,则不需要任何内容​​,如本例所示:https://github.com/chrisbanes/cheesesquare

CoordinatorLayout 有时很微妙,我建议您按照下一个示例使用它作为基础,如果需要,逐步增加更多的复杂性:

https://gist.github.com/RicardAparicio/f41523daaa0edbe0b4399549fff4da3f

希望对您有所帮助。