我遇到了支持浮动操作按钮的问题。 我的布局结构如下:
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();
}
}
});