CollapsingToolBarLayout、工具栏和菜单

4
我将尝试为我的应用程序获取工具栏上的菜单。
目前,我有一个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个回答

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
        }
    }
}););

引用自如何确定CollapsingToolbar已折叠?


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接