「app:layout_behavior」はどこに設定すればよいですか? 質問する

「app:layout_behavior」はどこに設定すればよいですか? 質問する

それはアプリバーレイアウト兄弟の親ですか、それとも兄弟内の最初のスクロール可能なビューですか?


Android 向けマテリアル デザイン、 があるビュー周囲の状況に応じてレイアウトの動作を調整できる機能の1つはコーディネーターレイアウト、 としてこのCodePathガイド言及:

CoordinatorLayout は、Google のマテリアル デザインのスクロール効果の多くを実現する機能を拡張します。現在、このフレームワークには、独自のカスタム アニメーション コードを記述しなくても機能する方法がいくつかあります。

私が今興味を持っているのは次のものです:

  • ツールバーまたはヘッダーのスペースを拡大または縮小して、メインコンテンツ用のスペースを確保します。

そこで、アプリバーレイアウトとともにツールバーセットとapp:layout_scrollFlagsもう一つグループを表示兄弟のアプリバーレイアウトapp:layout_behavior

私の質問は、それをどの ViewGroup (または View) に正確に配置すればよいかということですapp:layout_behavior


これまで、私は(そして、それらはすべて働いたこれらはすべて AppBarLayout の兄弟です):

  • スクロール表示

  • スクロール可能なビュー内の最初の ViewGroup

  • ViewGroup 内の ScrollView

そしてこれは機能しませんでした:

  • スクロール可能な View の子を持たない ViewGroup。

オンラインには複数の例がありますが、どこに配置すべきかを具体的に述べているものはありません。たとえば、

http://www.ingloriousmind.com/blog/quick-look-on-the-coordinatorlayout/ https://guides.codepath.com/android/Handling-Scrolls-with-CoordinatorLayout 参考: https://www.bignerdranch.com/blog/becoming-material-with-android-design-support-library/

ベストアンサー1

このリンクを確認してください: https://developer.android.com/reference/android/support/design/widget/AppBarLayout.html

AppBarLayoutスクロールするタイミングを知るために、別のスクロール兄弟も必要です。バインディングはAppBarLayout.ScrollingViewBehaviorクラスを通じて行われます。つまり、スクロールビューの動作を次のインスタンスに設定する必要があります。 AppBarLayout.ScrollingViewBehavior完全なクラス名を含む文字列リソースが利用可能です。

View彼らはそれについて言及しましたが、それは次のように の下に表示されるはずですAppBarLayout:

<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.support.v4.widget.NestedScrollView
             android:layout_width="match_parent"
             android:layout_height="match_parent"
             app:layout_behavior="@string/appbar_scrolling_view_behavior">

         <!-- Your scrolling content -->

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

     <android.support.design.widget.AppBarLayout
             android:layout_height="wrap_content"
             android:layout_width="match_parent">

         <android.support.v7.widget.Toolbar
                 ...
                 app:layout_scrollFlags="scroll|enterAlways"/>

         <android.support.design.widget.TabLayout
                 ...
                 app:layout_scrollFlags="scroll|enterAlways"/>

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

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

私の質問は次のとおりです:それを具体的に何にViewGroup(あるいは何にView)入れるべきでしょうかapp:layout_behavior

そしてこのリンクでは:http://guides.codepath.com/android/Handling-Scrolls-with-CoordinatorLayout

次に定義する必要があるのは間の関連AppBarLayoutスクロールされるビューを または などのネストされたスクロールが可能なその他のビューapp:layout_behaviorに追加します。サポートライブラリには特別な文字列リソースが含まれています。RecyclerViewNestedScrollView@string/appbar_scrolling_view_behavior にマッピングされ、この特定のビューでスクロールイベントが発生したときに にAppBarLayout.ScrollingViewBehavior通知するために使用されます。AppBarLayout動作は、イベントをトリガーするビューで確立する必要があります。

おすすめ記事