如何防止滚动时工具栏自行隐藏

3
我遇到了CoordinatorLayout和Toolbar的问题。通常情况下,我想通过滚动来隐藏/显示工具栏,这也能正常工作。但如果我在工具栏本身上快速滑动,它将独立于recyclerView或其他任何东西而隐藏。如何防止通过触摸工具栏本身来隐藏/显示工具栏。
这里有一个视频,解释了我的问题。 https://youtu.be/3bFcy2SF3Nk 以下是来自我的布局文件的片段,供参考。
<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@color/white">

    <android.support.design.widget.AppBarLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content">

        <android.support.v7.widget.Toolbar
            android:id="@+id/toolbar"
            android:layout_width="match_parent"
            android:layout_height="@dimen/action_bar_height"
            android:background="@color/white"
            app:contentInsetStart="0dp"
            app:layout_scrollFlags="scroll|enterAlways|snap">

            <ImageView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:paddingLeft="@dimen/padding"
                android:src="@drawable/logo_dark" />

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

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

        <android.support.v7.widget.RecyclerView
            android:id="@+id/list"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"/>
    </FrameLayout>
2个回答

2

好的,我看了你的视频,我曾经也遇到过同样的问题。 答案是这样的: 当您点击底部栏中的图标以加载新片段时,请执行以下操作:

禁用时:

  Toolbar toolbar = findViewById(R.id.toolbar);  // or however you need to do it for your code
    AppBarLayout.LayoutParams params = (AppBarLayout.LayoutParams) toolbar.getLayoutParams();
    params.setScrollFlags(0);  // clear all scroll flags

当点击底部栏的主页按钮时,请启用滚动工具栏:

启用方法:

params.setScrollFlags(AppBarLayout.LayoutParams.SCROLL_FLAG_SCROLL
    | AppBarLayout.LayoutParams.SCROLL_FLAG_ENTER_ALWAYS);

谢谢您的回答,这可能是可行的,但并不是很清晰的解决方案。对我来说,在禁用启用后无法工作。 - Demin Aleksei

-1
<ScrollView 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="fill_parent"
    android:layout_height="fill_parent"
    android:fitsSystemWindows="true"
  >
    <RelativeLayout
      android:layout_width="match_parent"
      android:layout_height="match_parent"
        android:background="@color/white">

        <android.support.design.widget.AppBarLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content">

            <android.support.v7.widget.Toolbar
                android:id="@+id/toolbar"
                android:layout_width="match_parent"
                android:layout_height="@dimen/action_bar_height"
                android:background="@color/white"
                app:contentInsetStart="0dp"
                app:layout_scrollFlags="scroll|enterAlways|snap">

                <ImageView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:paddingLeft="@dimen/padding"
                    android:src="@drawable/logo_dark" />

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

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

            <android.support.v7.widget.RecyclerView
                android:id="@+id/list"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"/>
        </FrameLayout>
</ScrollView>

谢谢您的回答,但对我没有用。 我必须使用CoordinatorLayout来实现工具栏和底部导航的正确行为。在ScrollView中使用RecyclerView不是一个好的做法。即使应用了您的示例,工具栏仍然会在快速滑动后隐藏。 - Demin Aleksei

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