带有垂直和水平滚动的Recyclerview

3

目前,我正在为电视制作我的应用程序布局,我面临的问题是我有一个RecyclerView来显示用户的最近活动,在手机上,我已经垂直地显示了最近的活动,但在Android TV上,我们有更多的宽度而不是高度,所以我想水平地显示最近的活动。我尝试了许多解决方案,例如

<android.support.v7.widget.RecyclerView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        tools:orientation="horizontal" tools:layoutManager="android.support.v7.widget.LinearLayoutManager" />

但是它仍然以垂直方式显示,我不知道为什么... 我还尝试将RecyclerView添加到ScrollView中,但仍然无法正常工作。也许是因为我在Java中声明了LinearLayoutManager,这就是为什么它以垂直格式显示的原因。

下面是我膨胀RecyclerView的片段代码:

View view=inflater.inflate(R.layout.recent_activity_tab1_recycler_view, container, false);
        RecyclerView recent_activity_list = (RecyclerView) view.findViewById(R.id.recent_activity_list);
        recent_activity_list.setLayoutManager(new LinearLayoutManager(getActivity()));
2个回答

1
不要在那里设置方向。相反,使用布局管理器来设置recyclerView的方向。
例如:
LinearLayoutManager layoutManager
    = new LinearLayoutManager(this, LinearLayoutManager.HORIZONTAL, false);

这里的第一个参数是上下文,第二个参数是方向,第三个参数是reverseLayout。

您可以在那里更改方向。


但是如果我在这里设置水平方向,我的手机会显示横向的RecyclerView,我希望它在手机上是响应式垂直的,在电视上是水平的。 - shaheryar

0
尝试替换这一行。
recent_activity_list.setLayoutManager(new LinearLayoutManager(getActivity()));

使用这行代码

recent_activity_list.setLayoutManager(new LinearLayoutManager(getActivity(), LinearLayoutManager.HORIZONTAL, false));

我也尝试过这个,但它会将移动设备的方向设置为水平方向,而我想要移动设备的方向为垂直方向,电视的方向为水平方向。 - shaheryar
所以你首先必须检查设备是电视还是手机,然后使用其中一个布局[水平-垂直]。你可以在以下链接中找到有关检查的有用答案: https://dev59.com/dV4d5IYBdhLWcg3wJflm - Hazem Ashraf

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