避免在RecyclerView的GridLayoutManger中滚动第一行和第一列。

7
Created a two way scrollable gridlayout for a TV app.
从布局文件中查看视图结构。
<?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>

我使用了一个GridLayout管理器(垂直方向),spanCount为49(24小时*2+1)以显示图像列。第一行用于显示半小时插槽的时间轴,第一列用于显示频道,每个频道都有自己在不同时间段运行的节目。现在,我已经实现了双向滚动的GridLayout,现在我还有两件事要做。

Image of above description

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

2) 当垂直滚动时,时间轴行(第一行)也会滚动,因此会被隐藏(但必须水平滚动,因为该行必须显示24小时)。现在我需要使这一行在垂直滚动时保持静态,其余行必须正常滚动。

是否可以实现?感谢您的帮助。


你试过这个吗?https://dev59.com/3eo6XIcBkEYKwwoYIAgL#26573338 - Reyansh Mishra
是的,我已经尝试过了。 - DJphy
协调者布局(coordinator layout)和布局行为(layout behaviors)是解决这种类型的用户界面的方案。 - Bhargav
2个回答

7
可行的方法是采用三个回收视图:
a) 垂直回收视图用于频道列表
b) 水平回收视图用于时间表列表
c) 网格布局管理器的回收视图用于数据
使用网格回收视图的滚动监听器(用于数据的回收视图)
/**
 * 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.
        }
    });
}

请您尝试并告知我这种方法是否适合您,如果有任何疑问,请在下方评论区留言,以便我们解决您的问题。


我已经完成了这个任务,但目标RecyclerView滚动出现问题。 - DJphy

3

请尝试从Github上获取TableView项目。

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

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

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


这个问题涉及电视平台,表格视图是一个为触摸平台设计的库,看起来像移动设备。这个库的主要需求/依赖是触摸。 - DJphy

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