【问题标题】:CoordinatorLayout with Tabs in android?CoordinatorLayout 与 android 中的选项卡?
【发布时间】:2015-08-03 10:22:17
【问题描述】:

我是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>`

【问题讨论】:

    标签: android android-tabs android-coordinatorlayout android-collapsingtoolbarlayout


    【解决方案1】:

    我在 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>
    

    【讨论】:

    • layout_behavior 中的属性 ViewPager 做到了!
    • IDE 确实将字符串资源标记为未找到,但似乎工作正常
    【解决方案2】:

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

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

    希望对你有帮助。

    【讨论】:

      【解决方案3】:

      “但它会导致显示出现问题”并没有说明您遇到了什么样的问题,但很高兴您找到了解决方案。

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

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2016-12-02
        • 1970-01-01
        • 1970-01-01
        • 2023-03-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多