如何将布局固定在CollapsingToolbarLayout中?

时间:2018-08-10 18:56:29

标签: android android-layout android-collapsingtoolbarlayout

我正在尝试创建一个包含三个元素的CollapsingToolbarLayout,其中只有一个元素标记为pin,其他元素标记为parallax

但是所有元素总是折叠

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

    <android.support.design.widget.CollapsingToolbarLayout
        android:id="@+id/collapsing_toolbar"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:fitsSystemWindows="true"
        app:contentScrim="@android:color/holo_red_light"
        android:background="@android:color/holo_purple"
        app:expandedTitleMarginEnd="64dp"
        app:expandedTitleMarginStart="48dp"
        app:layout_scrollFlags="scroll|exitUntilCollapsed">

        <ImageView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:scaleType="fitXY"
            app:layout_collapseMode="parallax"
            app:srcCompat="@drawable/bg_wave" />

        <com.example.ui.StatementHeaderView
            android:id="@+id/statementHeaderView"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            app:layout_collapseMode="parallax" />

        <include layout="@layout/toolbar_statement"
            app:layout_collapseMode="pin" />

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

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

toolbar_statement替换 Android工具栏的简单布局:

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout
    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="@dimen/height_main_toolbar"
    android:background="@color/toolbarStatement">

    <ImageView
        android:id="@+id/button_back"
        android:layout_width="@dimen/height_main_toolbar"
        android:layout_height="@dimen/height_main_toolbar"
        android:layout_gravity="start|center_vertical"
        android:padding="12dp"
        app:srcCompat="@drawable/slider_left" />

    <TextView
        android:id="@+id/title"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:textColor="@android:color/white"
        android:textSize="16sp"
        android:text="@string/nav_balance_sheet" />

    <ImageView
        android:id="@+id/button_calendar"
        android:layout_width="@dimen/height_main_toolbar"
        android:layout_height="@dimen/height_main_toolbar"
        android:layout_gravity="end|center_vertical"
        android:padding="12dp"
        app:srcCompat="@drawable/ic_calendar" />

</FrameLayout>

如果将toolbar_statement替换为android.support.v7.widget.Toolbar,则表示元素已正确固定。

这是否意味着只能固定Toolbar个元素?

1 个答案:

答案 0 :(得分:0)

the developer guide for <include>中,“使用<include>标签”部分的末尾有一个注释:

  

您还可以通过在android:layout_*标记中指定它们来覆盖包含的布局根视图的所有布局参数(任何<include/>属性)。例如:

<include android:id="@+id/news_title"
     android:layout_width="match_parent"
     android:layout_height="match_parent"
     layout="@layout/title"/>
     

但是,如果要使用<include>标签覆盖布局属性,则必须同时覆盖android:layout_heightandroid:layout_width才能使其他布局属性生效。

您的include标签没有指定layout_height或layout_width,但是您试图覆盖layout参数(collapseMode)。我怀疑如果将这两个属性添加到include标记中,问题将会解决。