Прозрачная панель инструментов поверх RecyclerView не прячется при прокрутке - PullRequest
0 голосов
/ 22 февраля 2019

У меня возникают некоторые проблемы при попытке скрыть панель инструментов, когда пользователь прокручивает панель инструментов 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, но в этом случае представление переработчика находится ниже панели инструментов, а не за ней.

Есть идеи, как мне это решить?Я схожу с ума ...

Ответы [ 3 ]

0 голосов
/ 22 февраля 2019

Создайте пользовательский класс, а затем расширьте 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());
0 голосов
/ 22 февраля 2019

Добавьте эти флаги прокрутки к дочернему элементу макета панели приложения

app:layout_scrollFlags="scroll|enterAlways|snap"

0 голосов
/ 22 февраля 2019

установить свойство
app:layout_scrollFlags="scroll|enterAlways"
для дочернего представления android.support.design.widget.AppBarLayout

...