それはアプリバーレイアウト兄弟の親ですか、それとも兄弟内の最初のスクロール可能なビューですか?
と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
に追加します。サポートライブラリには特別な文字列リソースが含まれています。RecyclerView
NestedScrollView
@string/appbar_scrolling_view_behavior
にマッピングされ、この特定のビューでスクロールイベントが発生したときに にAppBarLayout.ScrollingViewBehavior
通知するために使用されます。AppBarLayout
動作は、イベントをトリガーするビューで確立する必要があります。