Где должно быть установлено 'app:layout behavior'?

должен ли он быть установлен в AppBarLayout родитель брата или при первом прокручиваемом представлении внутри своего брата?


С материал дизайн для Android, есть вид что позволяет нам работать с поведением макета в зависимости от его окружения, одним из них является CoordinatorLayout, as это руководство CodePath отмечает:

CoordinatorLayout расширяет способность решить многие Эффекты прокрутки дизайна материалов Google. В настоящее время несколько способов, предусмотренных в этой структуре, которые позволяют ей работать без нужно написать свой собственный код анимации.

тот, который меня сейчас интересует:

  • расширение или сжатие панели инструментов или пространства заголовка, чтобы освободить место для основного содержимого.

Итак, мы будем использовать AppBarLayout с панели инструментов С app:layout_scrollFlags установить и другой ViewGroup отпрыск к AppBarLayout С app:layout_behavior.

мой вопрос: в какой именно ViewGroup (или, может быть, View) мы должны поставить это app:layout_behavior?


до сих пор я пробовал (и у них все работала, и все они являются братьями и сестрами AppBarLayout):

  • Прокрутка Вид

  • Первый ViewGroup внутри прокручиваемого вида

  • ScrollView внутри ViewGroup

и это не сработало:

  • ViewGroup без прокручиваемых детей просмотра.

в интернете есть несколько примеров, но ни один из них не указывает, куда вы должны его поместить, например:

http://www.ingloriousmind.com/blog/quick-look-on-the-coordinatorlayout/ https://guides.codepath.com/android/Handling-Scrolls-with-CoordinatorLayout https://developer.android.com/training/basics/firstapp/building-ui.html https://www.bignerdranch.com/blog/becoming-material-with-android-design-support-library/

3 ответов


, проверьте эту ссылку: 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

Далее нам нужно определить ассоциации между the AppBarLayout и вид, который будет прокручиваться. Добавить app:layout_behavior в RecyclerView или любое другое представление, способное к вложенной прокрутке, например NestedScrollView. Библиотека содержит специальную строку ресурс @string/appbar_scrolling_view_behavior что карты AppBarLayout.ScrollingViewBehavior, который используется для уведомления AppBarLayout когда события прокрутки происходят в этом конкретном представлении. Этот поведение должно быть установлено в представлении это запускает событие.


app:layout_behavior должно быть установлено на те представления, которые являются прямым дочерним элементом макета координатора


убедитесь, что вы добавили appbar_scrolling_view_behavior