Android: pin TabLayout to top of Scrollview

后端 未结 3 432
天涯浪人
天涯浪人 2020-12-24 07:58

I was looking at the twitter app on my phone.

You can see that when a user scrolls up, the tabLayout actually just pins itself onto the bottom of the toolba

相关标签:
3条回答
  • 2020-12-24 08:09

    By default there may not be a library that supports that. But you can indeed achieve it with a little bit of programming. Listen to the scrollview events through ViewTreeObserver, and manipulate others. If you are still not sure, let's make a library for it. You make an app and post in github, I will collaborate to make it working.

    0 讨论(0)
  • 2020-12-24 08:13

    for those first 3 questions look here (link seems dead) so this wayback machine link. it points to a github demo repo at https://github.com/slidenerd/Android-Design-Support-Library-Demo

    As for the 4th you need to create fragments for each tab and load them when they are selected for a simple approach, or you can create one fragment and communicate with it to show specific content when a tab is selected..

    EDIT couldn't find an updated link so here are the answers

    1. Use CoordinaterLayout.
    2. Any thing you want to collapse (or hide) with tool bar goes inside collapsingToolBarLayout.
    3. Any thing that stays after collapsed toolBar goes inside of AppBarLayout after CollapsingToolbarLayout.

    ex -

    <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:background="@android:color/background_light"
        android:fitsSystemWindows="true"
        >
    
        <android.support.design.widget.AppBarLayout
            android:id="@+id/main.appbar"
            android:layout_width="match_parent"
            android:layout_height="300dp"
            android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
            android:fitsSystemWindows="true"
            >
    
            <android.support.design.widget.CollapsingToolbarLayout
                android:id="@+id/main.collapsing"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                app:layout_scrollFlags="scroll|exitUntilCollapsed"
                android:fitsSystemWindows="true"
                app:contentScrim="?attr/colorPrimary"
                app:expandedTitleMarginStart="48dp"
                app:expandedTitleMarginEnd="64dp"
                >
    
                <ImageView
                    android:id="@+id/main.backdrop"
                    android:layout_width="match_parent"
                    android:layout_height="match_parent"
                    android:scaleType="centerCrop"
                    android:fitsSystemWindows="true"
                    android:src="@drawable/material_flat"
                    app:layout_collapseMode="parallax"
                    />
    
                <android.support.v7.widget.Toolbar
                    android:id="@+id/main.toolbar"
                    android:layout_width="match_parent"
                    android:layout_height="?attr/actionBarSize"
                    app:popupTheme="@style/ThemeOverlay.AppCompat.Light"
                    app:layout_collapseMode="pin"
                    />
             <!-- ADD ANY THING THAT GETS SCROLLED ALL THE WAY UP WITH TOOLBAR -->
            </android.support.design.widget.CollapsingToolbarLayout>
    
         <!--- ADD TAB_LAYOUT HERE---> 
    
        </android.support.design.widget.AppBarLayout>
    
        <android.support.v4.widget.NestedScrollView
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            app:layout_behavior="@string/appbar_scrolling_view_behavior"
            >
    
            <TextView
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:textSize="20sp"
                android:lineSpacingExtra="8dp"
                android:text="@string/lorem"
                android:padding="@dimen/activity_horizontal_margin"
                />
        </android.support.v4.widget.NestedScrollView>
    
        <android.support.design.widget.FloatingActionButton
            android:layout_height="wrap_content"
            android:layout_width="wrap_content"
            android:layout_margin="@dimen/activity_horizontal_margin"
            android:src="@drawable/ic_comment_24dp"
            app:layout_anchor="@id/main.appbar"
            app:layout_anchorGravity="bottom|right|end"
            />
    </android.support.design.widget.CoordinatorLayout>
    
    0 讨论(0)
  • 2020-12-24 08:22

    The closest solution to achieve the above mentioned is MaterialViewPager. It's a good starting point, you can fork it and modify for your own preferences, and you can customize it many ways.

    0 讨论(0)
提交回复
热议问题