当另一个滚动时如何隐藏回收视图

瓦桑特拉瓦尔

你好,我正在尝试在一个布局中实现 2 个回收器视图,一个在布局顶部是水平的,第二个是垂直的,我想要的是当垂直回收器视图滚动时,水平将保持隐藏,直到垂直回到起始位置

这是代码

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 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">

    <com.google.android.material.appbar.AppBarLayout
        android:id="@+id/appBarLayout"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">

        <include
            android:id="@+id/tool_bar"
            layout="@layout/tool_bar" />

    </com.google.android.material.appbar.AppBarLayout>

    // i tried to hide this recycler view with nested scroll but doesn't worked
    <androidx.core.widget.NestedScrollView
        android:id="@+id/snipet_list_Recyclerview"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_below="@+id/appBarLayout"
        android:overScrollMode="never">


        <LinearLayout
            android:id="@+id/linearLayout1"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:gravity="center"
            android:orientation="horizontal">

        // the recyclerview i want to hide when the other scroll
            <androidx.recyclerview.widget.RecyclerView
                android:id="@+id/postRecyclerView1"
                android:layout_width="match_parent"
                android:layout_height="200dp"
                android:orientation="horizontal"
                android:overScrollMode="never"
                app:layout_behavior="@string/appbar_scrolling_view_behavior"
                app:reverseLayout="true"
                tools:ignore="MissingConstraints" />

            <com.facebook.shimmer.ShimmerFrameLayout
                android:id="@+id/shimmerEffect1"
                android:layout_width="match_parent"
                android:layout_height="wrap_content">

                <LinearLayout
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:orientation="horizontal">

                    <include layout="@layout/snipet_list_top_10_home_shimmer" />

                    <include layout="@layout/snipet_list_top_10_home_shimmer" />

                    <include layout="@layout/snipet_list_top_10_home_shimmer" />

                    <include layout="@layout/snipet_list_top_10_home_shimmer" />

                    <include layout="@layout/snipet_list_top_10_home_shimmer" />

                    <include layout="@layout/snipet_list_top_10_home_shimmer" />

                    <include layout="@layout/snipet_list_top_10_home_shimmer" />
                </LinearLayout>
            </com.facebook.shimmer.ShimmerFrameLayout>
        </LinearLayout>
    </androidx.core.widget.NestedScrollView>

    // vertical recyclerview
    <androidx.recyclerview.widget.RecyclerView
        android:id="@+id/recyclerViewHome"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_below="@+id/snipet_list_Recyclerview"
        android:layout_marginTop="0dp"
        android:layout_marginBottom="10dp"
        android:orientation="vertical"
        android:overScrollMode="never"
        app:layout_behavior="@string/appbar_scrolling_view_behavior" />

    <com.facebook.shimmer.ShimmerFrameLayout
        android:id="@+id/shimmerEffect"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_below="@+id/snipet_list_Recyclerview">

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="vertical">

            <include layout="@layout/post_item_container_shimmer_home" />

            <include layout="@layout/post_item_container_shimmer_home" />

            <include layout="@layout/post_item_container_shimmer_home" />

            <include layout="@layout/post_item_container_shimmer_home" />

            <include layout="@layout/post_item_container_shimmer_home" />

            <include layout="@layout/post_item_container_shimmer_home" />

            <include layout="@layout/post_item_container_shimmer_home" />

            <include layout="@layout/post_item_container_shimmer_home" />

            <include layout="@layout/post_item_container_shimmer_home" />

            <include layout="@layout/post_item_container_shimmer_home" />

            <include layout="@layout/post_item_container_shimmer_home" />

            <include layout="@layout/post_item_container_shimmer_home" />

            <include layout="@layout/post_item_container_shimmer_home" />

        </LinearLayout>

    </com.facebook.shimmer.ShimmerFrameLayout>

</RelativeLayout>

爪哇

SnapHelper snapHelper = new PagerSnapHelper();
        snapHelper.attachToRecyclerView(verticalRecyclerView);
verticalRecyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {
            @Override
            public void onScrolled(@NonNull @NotNull RecyclerView recyclerView, int dx, int dy) {
                //set the visibility of honrizontalRecyclerView base on whether we can scroll upwards (-1 indicates upwards)
                if (recyclerView.canScrollVertically(-1))
                    horizontalRecyclerView.setVisibility(View.GONE);
                else {
                    if (!(horizontalRecyclerView.getVisibility() == View.VISIBLE)) {
                        horizontalRecyclerView.setVisibility(View.VISIBLE);


                    }
                }
            }
        });
阮福

在这里,您将 onScrollListener 添加到垂直回收器视图并覆盖方法 onScrolled()。更多信息你可以去doc帮助您的示例实现:

verticalRecyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {
        @Override
        public void onScrolled(@NonNull @NotNull RecyclerView recyclerView, int dx, int dy) {
            //set the visibility of honrizontalRecyclerView base on whether we can scroll upwards (-1 indicates upwards)
           if(recyclerView.canScrollVertically(-1)) 
             honrizontalRecyclerView.setVisibility(Visibility.GONE);
           else 
           {
             if(!honrizontalRecyclerView.isVisible())
               honrizontalRecyclerView.setVisibility(Visibility.VISIBLE);
           }
        }
    });

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何从另一个活动的不同回收视图开始创建新的回收视图

当一个表视图回收视图时,如何保持抽奖动画运行?

设置的意图,在OnCreate中回收视图去具体名单另一个特定活动(行)

一个活动滚动问题中的两个回收视图

当另一个被隐藏时拉长视图

向上滚动时如何越过回收视图中的最后一项

Android studio 如何将一个回收视图用于多个视图?

滚动时listView回收视图

滚动后如何显示一个元素,输入另一个元素时如何隐藏?

从另一个视图单击时如何隐藏按钮

检测水平过度滚动并在第一个细胞回收视图中显示删除选项

尝试创建效果,使集合视图在滚动时滑过另一个集合视图

在顶部和底部的 2 个视图之间放置一个回收视图

如何在集合视图控制器上添加另一个滚动视图?

如何从另一个视图控制器 Swift 中隐藏容器视图

在水平回收视图中滚动时获取项目

打开另一个时如何隐藏一个自举弹出窗口?

在另一个视图中滚动时“缩小” CardView

隐藏另一个视图时移动 GoogleMap,Xamarin

滚动列表到另一个视图下

在回收站视图中选择图像后如何打开另一个片段?

当键盘显示一个文本视图而不显示另一个文本视图时,如何移动视图

通过单击另一个回收站视图中的按钮刷新回收站视图

Android - 滚动视图内的回收视图

根据另一个视图的可见性隐藏一个视图

如何在父项是滚动视图的约束布局中将元素一个放在另一个之下

如何将按钮从一个视图控制器隐藏到另一个

滚动时ListView覆盖另一个布局

滚动时 Div 重叠另一个 div