多个片段中的浮动操作按钮layout_behavior

时间:2016-03-18 22:06:19

标签: android-fragments scroll floating-action-button

我遇到了支持浮动操作按钮的问题。 我的布局结构如下:

MainActivity:

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

        <android.support.design.widget.CollapsingToolbarLayout>
            <ImageView/>
            <LinearLayout>
                <TextView/>
                <android.support.v7.widget.AppCompatRatingBar/>
            </LinearLayout>
            <android.support.v7.widget.Toolbar/>
            <android.support.design.widget.TabLayout/>
        </android.support.design.widget.CollapsingToolbarLayout>
    </android.support.design.widget.AppBarLayout>

    <FrameLayout
        android:id="@+id/fragment_container"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        app:layout_behavior="@string/appbar_scrolling_view_behavior" />

    <android.support.design.widget.FloatingActionButton
        android:id="@+id/fab"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_margin="16dp"
        android:src="@drawable/ic_action_add"
        app:layout_anchor="@+id/fragment_container"
        app:layout_anchorGravity="bottom|end"
        app:layout_behavior="...ScrollAwareFABBehavior"
        app:elevation="4dp" />

我在多个片段中使用此FAB,但ScrollAwareBehavior(在滚动NestedScroll时隐藏/显示)仅在第一个片段中工作。 (第一个使用NestedScrollView,第二个使用RecyclerView)

我是否有机会从第一个NestedScrollView“分离”FAB并将其附加到第二个片段中的RecyclerView?

我想过使用xml标签:layout_behavior和anchor会做这个工作。也许在每个片段中重新创建FAB都是一种解决方法?

感谢您对此主题的看法。

编辑: 作为解决方法,我现在正在使用它:

mRecyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {
        @Override
        public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
            if (dy > 0 && MainActivity.fab.isShown())
                MainActivity.fab.hide();
            else if(dy < 0 && !MainActivity.fab.isShown()){
                MainActivity.fab.show();
            }
        }
    });

0 个答案:

没有答案