当用户在recyclerView上滚动时,尝试隐藏工具栏有些麻烦。
工具栏是透明的,位于recyclerView上方(通过FrameLayout)。我进行了很多搜索,但没有找到解决此错误行为的任何解决方案。
当前,我有这个xml:
<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
app:statusBarBackground="@android:color/transparent">
<android.support.design.widget.AppBarLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@android:color/transparent"
android:fitsSystemWindows="true">
<include layout="@layout/toolbar_activity" />
</android.support.design.widget.AppBarLayout>
<FrameLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<android.support.v7.widget.RecyclerView
android:id="@+id/rv"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_behavior="@string/appbar_scrolling_view_behavior" />
</FrameLayout>
</android.support.design.widget.CoordinatorLayout>
使用此代码,工具栏固定在顶部,并且不受 app:layout_behavior =“ @ string / appbar_scrolling_view_behavior” 的影响。我尝试过将该属性移至FrameLayout,但在这种情况下,recyclerview在工具栏下方,而不是在工具栏下方。
关于如何解决此问题的任何想法?我要疯了...
答案 0 :(得分:0)
设置属性
app:layout_scrollFlags="scroll|enterAlways"
到android.support.design.widget.AppBarLayout的子视图
答案 1 :(得分:0)
创建一个自定义类,然后扩展RecyclerView.OnScrollListener
public class ScrollListener extends RecyclerView.OnScrollListener {
public ScrollListener() {
}
public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
switch (newState) {
case RecyclerView.SCROLL_STATE_IDLE:
System.out.println("The RecyclerView is not scrolling");
break;
case RecyclerView.SCROLL_STATE_DRAGGING:
System.out.println("Scrolling now");
break;
case RecyclerView.SCROLL_STATE_SETTLING:
System.out.println("Scroll Settling");
break;
}
}
public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
if (dy > 0) {
//scrolling downwards: hide/show toolbar
System.out.println("Scrolled Downwards");
} else if (dy < 0) {
//scrolling downwards: hide/show toolbar
}
}
}
将侦听器附加到回收者视图
mRecyclerView.addOnScrollListener(new ScrollListener());
答案 2 :(得分:0)
将这些滚动标志添加到您的应用栏布局的子项
app:layout_scrollFlags="scroll|enterAlways|snap"