CollapsingToolBarLayout,工具栏和菜单

时间:2015-10-11 15:26:03

标签: android android-layout android-toolbar android-menu android-collapsingtoolbarlayout

我正在尝试为我的应用在工具栏上显示菜单。

目前,我有一个CollapsingToolbarLayout。当用户向上移动Recyclerview时,岛屿的图像尺寸减小,然后最终折叠到工具栏中。

这是展开时的样子:

collapsingtoolbarlayout

这就是折叠时的样子:

random island

现在,你可以看到,当它被展开时,心脏图标是重复的(一次在FAB中,一次在工具栏中。我只希望当FAB不再可见时,心脏图标出现在工具栏中,否则,我觉得当屏幕上有两个完全相同的按钮时,用户会感到困惑。

当collapsingToolBarLayout完全折叠时,如何才能在工具栏上显示心形图标?我试图寻找某种类型的onCollapse监听器,但没有运气。

这是xml的代码:

   <android.support.design.widget.AppBarLayout
        android:layout_height="192dp"
        android:id="@+id/appbar"
        android:layout_width="match_parent">
<!--        android:fitsSystemWindows="true"-->
        <android.support.design.widget.CollapsingToolbarLayout
            android:id="@+id/collapsing_toolbar"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            app:layout_scrollFlags="scroll|exitUntilCollapsed"

            app:contentScrim="?attr/colorPrimary"
            app:expandedTitleMarginStart="16dp"
            app:expandedTitleMarginEnd="32dp">

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

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

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

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

1 个答案:

答案 0 :(得分:1)

嘿,你可以像这样添加听众

AppBarLayout appBarLayout = (AppBarLayout)view.findViewById(R.id.app_bar_layout);
appBarLayout.addOnOffsetChangedListener(new AppBarLayout.OnOffsetChangedListener() {
    @Override
    public void onOffsetChanged(AppBarLayout appBarLayout, int verticalOffset) {
        if (Math.abs(verticalOffset) == appBarLayout.getTotalScrollRange()) {
            // Collapsed (make button visible and fab invisible)
        } else if (verticalOffset == 0) {
            // Expanded (make fab visible and toolbar button invisible)
        } else {
            // Somewhere in between
        }
    }
}););

引自How can i determine that CollapsingToolbar is collapsed?