【问题标题】:Android collapsing Action bar with swipeable tabs带有可滑动标签的 Android 折叠操作栏
【发布时间】:2017-01-03 11:30:35
【问题描述】:

我正在尝试实现一个如link 所示的页面。谁能帮我看看怎么弄。

【问题讨论】:

    标签: android android-studio android-actionbar android-viewpager android-tabs


    【解决方案1】:

    https://github.com/kaedea/Andriod-Seamless-ViewPager-Header

    我推荐了这个例子,它对我来说很好用。请试试这个,你一定会得到的。

    【讨论】:

      【解决方案2】:

      【讨论】:

        【解决方案3】:

        用于展开和折叠工具栏(无论是否有选项卡):

        <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.v7.widget.Toolbar
                        android:id="@+id/toolbar"
                        android:layout_width="match_parent"
                        android:layout_height="?attr/actionBarSize"
                        app:popupTheme="@style/ThemeOverlay.AppCompat.Light" />
        
        </android.support.design.widget.CoordinatorLayout>
        

        【讨论】:

        • 我猜如果不使用折叠工具栏它无法展开和隐藏工具栏
        • 折叠效果可以用ActionBars代替ToolBars吗?由于主题问题,试图摆脱 AppbarLayout。
        【解决方案4】:

        试试这个 XML:在视图寻呼机中,您可以根据选项卡布局选择的选项卡进行滑动。

        <?xml version="1.0" encoding="utf-8"?>
        <FrameLayout 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.support.design.widget.CoordinatorLayout
                android:id="@+id/main_content"
                android:layout_width="match_parent"
                android:layout_height="match_parent">
        
                <android.support.design.widget.FloatingActionButton
                    android:id="@+id/fab_addProfile"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_gravity="bottom|right"
                    android:layout_margin="@dimen/_5sdp"
                    app:backgroundTint="@color/colorPrimary"
                    app:elevation="@dimen/_2sdp"
                    app:fabSize="normal"
                    android:visibility="gone"
                    app:rippleColor="@color/textPrimary"
                    app:srcCompat="@drawable/ic_vector_plus_white"
                    app:useCompatPadding="true" />
        
                <android.support.design.widget.AppBarLayout
                    android:id="@+id/appbar"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:background="@android:color/transparent"
                    android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar">
        
                    <android.support.design.widget.CollapsingToolbarLayout
                        android:id="@+id/collapsing_toolbar"
                        android:layout_width="match_parent"
                        android:layout_height="match_parent"
                        android:background="@color/colorPrimary"
                        app:layout_scrollFlags="scroll|snap"
                        app:titleEnabled="false">
        
                        <LinearLayout
                            android:layout_width="match_parent"
                            android:layout_height="wrap_content"
                            android:orientation="vertical"
                            app:layout_collapseMode="parallax">
        
                            <FrameLayout
                                android:layout_width="match_parent"
                                android:layout_height="wrap_content">
        
                                <ImageView
                                    android:id="@+id/dv_coverImage"
                                    android:layout_width="match_parent"
                                    android:layout_height="@dimen/_100sdp"
                                    android:scaleType="centerCrop"
                                    android:alpha="0.85"
                                    android:tint="@color/black_translucent"
                                    android:src="@drawable/bg_profile" />
        
                                <FrameLayout
                                    android:layout_width="match_parent"
                                    android:layout_height="wrap_content"
                                    android:layout_marginTop="@dimen/_50sdp"
                                    android:weightSum="1">
        
                                    <ImageView
                                        android:id="@+id/dv_profile_pic"
                                        android:layout_width="@dimen/_80sdp"
                                        android:layout_height="@dimen/_80sdp"
                                        android:layout_margin="@dimen/_10sdp" />
        
                                </FrameLayout>
                            </FrameLayout>
                        </LinearLayout>
        
                        <android.support.v7.widget.Toolbar
                            android:id="@+id/toolbar"
                            android:layout_width="match_parent"
                            android:layout_height="?attr/actionBarSize"
                            android:background="@android:color/transparent"
                            app:layout_collapseMode="parallax"
                            app:navigationIcon="@drawable/ic_menu_white"
                            app:popupTheme="@style/ThemeOverlay.AppCompat.Light" />
        
                    </android.support.design.widget.CollapsingToolbarLayout>
        
                    <LinearLayout
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:background="@color/colorPrimary"
                        android:orientation="vertical">
        
                        <android.support.design.widget.TabLayout
                            android:id="@+id/tabLayout"
                            android:layout_width="match_parent"
                            android:layout_height="?attr/actionBarSize"
                            android:layout_gravity="bottom"
                            android:background="?attr/selectableItemBackground"
                            android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
                            app:layout_collapseMode="pin"
                            app:tabGravity="fill"
                            app:tabIndicatorColor="@color/white"
                            app:tabMode="fixed"
                            app:tabSelectedTextColor="@color/white"
                            app:tabTextAppearance="@style/AppTheme.ProfileTab"
                            app:tabTextColor="@color/darkGreen" />
                    </LinearLayout>
                </android.support.design.widget.AppBarLayout>
        
                <android.support.v4.widget.NestedScrollView
                    android:id="@+id/nestedScrollView"
                    android:layout_width="match_parent"
                    android:layout_height="match_parent"
                    android:layout_gravity="fill_vertical"
                    app:layout_behavior="@string/appbar_scrolling_view_behavior">
        
                    <android.support.v4.view.ViewPager
                        android:id="@+id/viewpager"
                        android:layout_width="match_parent"
                        android:layout_height="match_parent" />
                </android.support.v4.widget.NestedScrollView>
            </android.support.design.widget.CoordinatorLayout>
        
            <include layout="@layout/view_progress_view" />
        </FrameLayout>
        

        【讨论】:

        • 能否详细介绍一下“view_progress_view”?
        • 这是我为个人使用而创建的进度视图,您可以忽略它。删除该行不会影响其他代码
        【解决方案5】:
        Try this one
        
        <android.support.v4.widget.SwipeRefreshLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        android:id="@+id/swipeContainer"
        android:layout_width="match_parent"
        android:layout_height="match_parent">
        
        <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:background="@color/white">
        
            <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">
        
        
                <RelativeLayout
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    app:layout_collapseMode="parallax"
                    app:layout_scrollFlags="scroll|enterAlways|enterAlwaysCollapsed">
        
                    <!-- View that will be hidden when video goes fullscreen -->
                    <RelativeLayout
                        android:id="@+id/nonVideoLayout"
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:background="@color/white">
        
                        // your view
        
                    </RelativeLayout>
        
        
                </RelativeLayout>
        
        
                /***
                Here You can add custom layout
                **/
        
        
                <android.support.design.widget.TabLayout
                    android:id="@+id/tabs"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:background="@android:color/white"
                    app:tabIndicatorColor="@android:color/holo_blue_light"
                    app:tabSelectedTextColor="@color/black"
                    app:tabTextColor="@color/black" />
        
            </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_behavior="@string/appbar_scrolling_view_behavior" />
        
        </android.support.design.widget.CoordinatorLayout>
        
        
        </android.support.v4.widget.SwipeRefreshLayout>
        

        【讨论】: