如何解决回收站视图上/下滚动事件时可见的布局中闪烁的屏幕

时间:2018-12-18 15:43:25

标签: java android android-recyclerview

如何解决回收站视图向下滚动时可见布局中的屏幕闪烁以及回收站视图向上滚动时已消失的布局。部分代码如下:

activity_main.xml

 <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical"
        android:layout_marginTop="?attr/actionBarSize"
        android:focusableInTouchMode="true">
        <LinearLayout
            android:id="@+id/ll_filter_and_sort"
            android:layout_width="match_parent"
            android:layout_height="50dp"
            android:weightSum="2"
            android:background="@color/white"
            android:focusableInTouchMode="false">
            <RelativeLayout
                android:id="@+id/rl_filter"
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:gravity="center"
                android:layout_weight="1">
                <ImageView
                    android:id="@+id/iv_filter"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_centerVertical="true"
                    android:src="@drawable/ic_filter_list" />
                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_toRightOf="@id/iv_filter"
                    android:text="FILTER"
                    android:textSize="12sp"
                    android:layout_marginLeft="@dimen/activity_horizontal_margin"
                    android:layout_marginRight="@dimen/activity_horizontal_margin"
                    android:layout_centerVertical="true" />
            </RelativeLayout>
            <RelativeLayout
                android:id="@+id/rl_sort"
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:gravity="center"
                android:layout_weight="1">
                <ImageView
                    android:id="@+id/iv_sort_icon"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_centerVertical="true"
                    android:src="@drawable/ic_sort"/>
                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_toRightOf="@id/iv_sort_icon"
                    android:layout_toEndOf="@id/iv_sort_icon"
                    android:text="SORT"
                    android:textSize="12sp"
                    android:layout_marginLeft="@dimen/activity_horizontal_margin"
                    android:layout_marginRight="@dimen/activity_horizontal_margin"
                    android:layout_centerVertical="true" />
            </RelativeLayout>
        </LinearLayout>
        <android.support.v4.widget.SwipeRefreshLayout
            android:id="@+id/listing_swipe_refresh"
            android:layout_width="match_parent"
            android:layout_height="wrap_content">
            <android.support.v7.widget.RecyclerView
                xmlns:android="http://schemas.android.com/apk/res/android"
                xmlns:app="http://schemas.android.com/apk/res-auto"
                android:id="@+id/listing_recycler"
                android:layout_width="match_parent"
                android:layout_height="match_parent"/>
        </android.support.v4.widget.SwipeRefreshLayout>
    </LinearLayout>

activity_main.xml包含两部分,上半部分是过滤器和排序布局,下半部分是所需数据的回收者视图。主要目的是如果回收站视图甚至向上滚动,文件管理器和排序布局必须消失,回收站视图甚至向下滚动,过滤器和排序布局必须再次可见。 对于此操作侦听器,部分代码如下:

MainActivity.java

private class ScrollListener extends RecyclerView.OnScrollListener {
    @Override
    public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
        super.onScrolled(recyclerView, dx, dy);

        verticalPosition = dy;

        if(dy > 0){
            llFilterAndSort.setVisibility(View.GONE);
        }
        else {
            llFilterAndSort.setVisibility(View.VISIBLE);
        }
    }

}

在上下滚动事件中,它们使用各种垂直滚动dy值触发。因此,每当值更改时,就会发生GONE和VISIBLE。 这就是屏​​幕闪烁的原因。所以,我想知道如何解决这个问题。请支持我。

0 个答案:

没有答案