当前位置: 首页 > 知识库问答 >
问题:

避免在recyclerview gridlayoutmanager中滚动第一行和第一列

隆长卿
2023-03-14

为电视应用程序创建了双向滚动网格布局

从布局文件查看结构

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#021257"
android:orientation="vertical">

<HorizontalScrollView
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:fillViewport="true">

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

        <android.support.v7.widget.RecyclerView
            xmlns:app="http://schemas.android.com/apk/res-auto"
            android:id="@+id/rvThumbnail"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:background="#021257"
            android:orientation="vertical"/>


    </LinearLayout>
</HorizontalScrollView>
</LinearLayout>

所以我使用了gridlayoutmanager(方向垂直)和spancount 49(24小时*2)1来显示列中的图像。第一行显示分为半小时时段的时间线,第一列显示频道,每个频道都有自己的节目在不同的时段运行。现在我实现了双向滚动gridlayout,现在我还有两件事要做。

1)当水平滚动时,通道列(第一列)也会滚动,因此会被隐藏(但它必须垂直滚动,因为可以有20个通道)。现在我需要让这列静态温水平滚动,其余列必须正常滚动

2) 垂直滚动时,时间线行(第一行)也会滚动,因此会隐藏(但它必须水平滚动,因为该行必须显示24小时)。现在我需要使这一行垂直滚动,其他行必须正常滚动。

这可能实现吗?我感谢你的帮助

共有2个答案

胡高寒
2023-03-14

尝试从Github的TableView项目。

TableView是一个功能强大的Android库,用于显示复杂的数据结构和渲染由行、列和单元格组成的表格数据。TableView依赖于一个单独的模型对象来保存和表示它显示的数据。这个存储库还包含一个示例应用程序,旨在向您展示如何在应用程序中创建自己的TableView。

从这个项目中获取概念并修改你想要的。

希望这个解释能帮助你:)

秦承安
2023-03-14

可行的方法是采用三循环观点

a) 频道列表的垂直循环视图

b) 用于计时列表的水平循环视图

c)使用网格布局管理器的数据回收视图

使用网格循环视图的scrollChange侦听器(用于数据的循环视图)

/**
 * Use scroll values
 */
public void setScroll() {
    mDataRecycleView.setOnScrollChangeListener(new View.OnScrollChangeListener() {
        @Override
        public void onScrollChange(View v, int scrollX, int scrollY, int oldScrollX, int oldScrollY) {
          //you can now play on scroll value of this recycle view and    change the scroll value of other recycle views.

   // you can get your view here and also know the value of view so based on value you can handle it here so it's very easy.
        }
    });
}

请尝试让我知道,如果这种方法适用于您,并在下面评论任何查询,以便我们可以解决您的问题。

 类似资料:
  • 向前有一个滚动条,而不是一个正常的滚动条外,但到目前为止,我没有任何运气,有什么办法我可以做到这一点? 由于大量的行,表列表出界了,有没有办法在第5行之后切到导航的第二页或无限滚动条? 下面是表格html的代码 我尝试过使用datatable插件,但也有一些不太好的地方

  • 我需要在同一个Google Sheets文件中同步所有工作表。我只想同步第一行和第一列(这是冻结的),而其余的内容不应该同步。 我还希望这样,如果我在工作表中插入/删除一行,也会对所有其他同步工作表执行相同的操作。此外,如果进行了其他修改,例如冻结了一行,则应在所有图纸上进行相同的修改。 我看到了这些问题中的代码: 如何在两个Google电子表格中使用=importrange()同步两张工作表 简

  • 问题内容: 在这种情况下,需要将元素滚动到视口中。问题是我不知道哪个元素是可滚动的。例如,在“纵向”中,身体是可滚动的,在“横向”中,身体是其他的元素(还有更多情况会更改可滚动的元素) 现在的问题是,给定需要滚动到视口中的元素,找到其第一个可滚动父级的最佳方法是什么? 我在这里设置了一个演示。使用按钮,您可以在两种不同情况之间切换 主体可以滚动或 有什么建议么 ? 问题答案: 只需检查滚动条是否可

  • 3.2 第一次启动 第一次启动后,会进入如下页面: 第一次启动没有任何数据,请按照提示初始化数据。 由于站点信息依赖Nginx集群信息、集群信息,所以请完成站点依赖的Nginx集群信息、业务集群信息配置后,再配置站点信息。

  • 我刚开始学习SQL。我正在使用Oracle数据库。 表emp中包含empno、ename、job、mgr、hiredate、sal、comm、deptno列。 我想从ename列中获取每个deptno的第一条记录,ename必须按asc排序。 以下SQL工作: 我想优化它,所以我不需要重写它,如果我添加一些记录到deptno列。 我用distinct-like进行了尝试

  • 我想在片段中加载任务,在片段的onviewCreate中,我注册observer,在片段的onResume中,我异步加载任务,当第一次输入片段时,它工作正常,但当我导航到其他片段,然后返回到任务片段时,回调将被调用两次。 我知道如果LiveData已经有了数据集,它将被传递给观察者,因此当返回到任务片段时,在中注册观察者时,将触发,在onResume中,将第二次触发,我想知道如何避免这种情况。我搜