LinearLayout перекрывая CoordinatorLayout поддержки

это первый раз, когда я использую CoordinatorLayout, и я действительно не понимаю, как это работает.

мой LinearLayout перекрывает мою панель инструментов, как если бы я был в FrameLayout или RelativeLayout, и я не знаю, как сказать ему идти ниже ( например, android:layout_below с RelativeLayout )

вот мой код:

<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/main_content"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <android.support.design.widget.AppBarLayout
        android:id="@+id/appbar"
        android:layout_width="match_parent"
        android:layout_height="192dp"
        android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar">

        <android.support.design.widget.CollapsingToolbarLayout
            android:id="@+id/collapsing_toolbar"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            app:contentScrim="?attr/colorPrimary"
            app:expandedTitleMarginEnd="64dp"
            app:expandedTitleMarginStart="48dp"
            app:layout_scrollFlags="scroll|exitUntilCollapsed">

            <ImageView
                android:id="@+id/backdrop"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:fitsSystemWindows="true"
                android:src="@drawable/logo2"
                app:layout_collapseMode="pin" />

            <android.support.v7.widget.Toolbar
                android:id="@+id/toolbar"
                android:layout_width="match_parent"
                android:layout_height="?attr/actionBarSize"
                app:layout_collapseMode="pin"
                app:popupTheme="@style/ThemeOverlay.AppCompat.Light" />

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

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_below="@id/appbar"
        android:orientation="vertical"
        android:paddingBottom="@dimen/activity_vertical_margin"
        android:paddingLeft="@dimen/activity_horizontal_margin"
        android:paddingRight="@dimen/activity_horizontal_margin"
        android:paddingTop="@dimen/activity_vertical_margin">

            .... Very Large Form ...
    </LinearLayout>
</android.support.design.widget.CoordinatorLayout>

другое сомнение: почти все примеры, которые я видел, были с CoordinateLayout управление RecyclerView. Мой макет не является RecyclerView, просто очень длинная форма. Есть ли смысл делать это таким образом?

3 ответов


попробуйте вложить содержимое в NestedScrollView. Не забудьте включить XML-тег layout_behavior.

 <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>

дополнительные ресурсы: http://developer.android.com/reference/android/support/design/widget/AppBarLayout.html


поздний ответ, но это все равно может помочь кому-то.

вложить все chidren CoordinatorLayout на LinearLayout, вертикальной ориентации.
У меня получилось.


от developer.android.com

"CoordinatorLayout является супер-питание FrameLayout. CoordinatorLayout предназначен для двух случаев первичного использования: Как декор приложения верхнего уровня или макет chrome Как контейнер для конкретного взаимодействия с одним или несколькими дочерними представлениями Задав поведение дочерних представлений CoordinatorLayout, вы можете обеспечить множество различных взаимодействий внутри одного родителя, и эти представления также могут взаимодействовать друг с другом. Классы представления можно указать поведение по умолчанию при использовании в качестве дочернего элемента CoordinatorLayout с помощью аннотации DefaultBehavior. Поведение может быть использовано для реализации различных взаимодействий и дополнительных модификаций макета, начиная от выдвижных ящиков и панелей до размахиваемых элементов и кнопок, которые прилипают к другим элементам при их перемещении и анимации. Дети CoordinatorLayout могут иметь якорь. Этот идентификатор представления должен соответствовать произвольному потомку CoordinatorLayout, но он не может быть заякоренный ребенок сам или потомок заякоренного ребенка. Это можно использовать для размещения плавающих представлений относительно других произвольных панелей содержимого."

таким образом, вы можете изменить корневой вид на LinearLayout(вертикальная ориентация) или использовать scrollview, который будет упорядочивать детей линейно.