17

私の携帯電話でTwitterアプリを見ていました。Android:ピンTabLayoutからScrollviewの先頭へ

twitter app

あなたは時にユーザーがスクロールアップ、tabLayoutは実際にちょうどうまくツールバーの下に自分自身をピンと全く動かないことがわかります。

アプリのトップ部分(プロフィール写真、自転車のプロフィールの壁紙、芝生の上のテキスト、テキスト)をすべてCollapsingToolBarLayoutとAppBarLayoutに入れてみたのかもしれませんが、実際は草の上に自転車を置いたプロフィールの壁紙はCollapsingToolBarLayoutとAppBarLayoutの一部であり、それは実際に崩壊する唯一の部分だからです。テキスト部分は上にスクロールし、tabLayoutはツールバーの下の一番上にピンだけを固定します。

私はTwitterアプリのクレジットを読みました。彼らはSlidingTabLayoutを使ってその効果を達成したようです。 SlidingTabLayoutはtabLayoutに似ています。後者はサポートライブラリでサポートされています。

それは、今日だけでなく、主流のアプリケーションで使用されているかなり一般的なパターンのように見える -

たGoogle+アプリは、アプリのプロフィールビューでそれを使用しています。

google+

のFacebookモーメントはアプリでそれを使用しています:

facebook moments

どのようにして彼らはすべてこれを行うことができましたか?

私はこれらのアプリに似た何かをしようとしています。

私の要件は以下のとおりです。

  1. あなたは
  2. をスクロールアップ時に崩壊するcollapsingToolBarLayoutは、それが完全に崩壊したときに、ツールバーの下にスクロールして、「隠す」でしょうcollapsingToolBarLayout下のTextViewを持っています。
  3. collapsingToolBarLayoutの下にテキストビューをスクロールしたときに、tabLayoutに「スティック」するtextviewの下にtabLayoutがあります。あなたはtabLayoutで各タブをクリックすると、recyclerviewが「ツイート」、「写真」、「お気に入り」などのリスト

を切り替えますよう

  • は、私は2つを見てtabLayout下recyclerviewを持っていますSOに投稿されたその他の質問:

    Can the tab selection indicator of TabLayout be pinned to the top of the screen while scrolling?ここの答えは、tabLayoutの動作を変更するように見えますが、その動作を変更することは、実際にTwitterアプリケーションが何を行うかを疑うものではありません。前述したように、tabLayoutはCollapsingToolBarLayoutとAppBarLayoutの外にあるように見え、CollapsingToolBarLayoutとAppBarLayout内にある場合にのみ動作が有効になります。

    How to pin TabLaout at top of ScrollView?。この質問は、私が尋ねたものに似たものを尋ねますが、十分な詳細を与えず、答えもありません。

  • 答えて

    4

    here

    を見ますタブが選択された特定のコンテンツのショー...

    EDIT

    1. 使用CoordinaterLayので、ここで答えを更新されたリンクをしている見つけることができませんでしたでる。
    2. ツールバーで折りたたみ(または非表示にしたい)ものは、collapsingToolBarLayout内に入ります。
    3. CollapsingToolbarLayoutの後に、折りたたまれたtoolBarがAppBarLayoutの内側に移動した後に残っているもの。

    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

    これは面白いですが、私は実際に昨夜のSlidenerdsビデオを見て、2つの別々のCollapsingToolbarlayoutを作成すると実際に動作すると思っていました。これは後で試してみます。 – Simon

    +0

    実際にはやりたいことを実際にはしません。スライドされた例を見ると、例が上にスライドし、tabLayoutとツールバーの両方が画面から消えます。 scollFlagをexitUntilCollapsedに変更することで、一番上の場所にスティックすることができますが、textviewとtabLayoutは両方ともツールバーの上部に貼り付けられます。これは私が望むものではありません。テキストビューを画面からスクロールし、tabLayoutをスティックします。 – Simon

    +0

    あなたは1つのcollasingBarLayoutの中に2人の子供がいることが必要です1.属性collapsMode = "pin"を持つツールバー、および2.属性collapseMode = "parallax"を持つTextView –

    1

    デフォルトでは、それをサポートするライブラリがない場合があります。しかし、少しプログラミングをするだけでそれを達成することができます。 ViewTreeObserverを介してスクロールビューイベントを聴いて、他のものを操作します。それでもまだ分からない場合は、ライブラリを作ってみましょう。あなたはアプリを作ってgithubに投稿します、私はそれを働かせるために協力します。

    0

    上記を達成する最も近い解決策はMaterialViewPagerです。それは良い出発点です、あなたはそれをフォークし、あなたの好みのために変更することができます、あなたはそれを多くの方法でカスタマイズすることができます。あなたは、各タブの断片を作成し、それらは単純なアプローチのために選択されたときにそれらをロードする必要がある、またはあなたが一つの断片を作成し、それに通信できる第四については、それらの最初の3つの質問のための

    +0

    ライブラリは本当に私は図書館は情報のリストを表示するために構築されているように見えるとして、それは手直しがあまりなくやりたいしませんが、それはのために有用ではありません典型的な「ソーシャル」アプリ。私がcollapsingToolBarLayoutの下にtextviewをしたいのは、人のプロフィールに関する情報を、twitterアプリケーションが実際の情報を見るためにどこかをクリックする必要なしに行う方法に似ているからです。そのような広く使われて便利な概念であるコードでそれを行う方法があるはずです。 – Simon

    関連する問題