我想查看一下,其中某些行显示为段落(即不是垂直列表而是段落)。但我也希望每一行都可以单击,以便提示用户共享该特定行。
我实际上是在构建带有翻译的《古兰经》应用程序。我希望用户单独阅读古兰经(第一张图片)和翻译(第二张图片)。但是我想要独立版本(如下面的第一个图像)为段落格式。如何使用RecyclerView
实现这一目标(因为我已经使用RecyclerView实现了翻译版本)?
换句话说,我知道如何在单个RecyclerView中使用两个视图,但是(请参阅第一张图像的3-5行)如何使用RecyclerView将一个布局变形为另一个布局
答案 0 :(得分:1)
答案是FlexBoxLayoutManager,您可以将其与RecyclerView put一起使用
implementation 'com.google.android:flexbox:1.0.0'
在您的gradle文件中。现在设置RecyclerView布局,
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="5dp"
xmlns:toools="http://schemas.android.com/tools">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toEndOf="@id/end_indicator"
android:textSize="20sp"
android:layout_marginEnd="5dp"
android:layout_marginStart="5dp"
android:textDirection="anyRtl"
android:id="@+id/line_holder"
/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@android:color/black"
android:layout_marginStart="5dp"
android:layout_alignBaseline="@id/line_holder"
android:gravity="center_vertical|center_horizontal"
android:textAlignment="gravity"
android:layout_marginEnd="5dp"
android:background="@drawable/stackoverflow_bg"
android:id="@+id/end_indicator"/>
</RelativeLayout>
此处stackoverflow_bg.xml是可绘制的椭圆形。 现在设置RecyclerView,
FlexboxLayoutManager manager = new FlexboxLayoutManager(this);
manager.setJustifyContent(JustifyContent.CENTER);
manager.setFlexWrap(FlexWrap.WRAP);
manager.setFlexDirection(FlexDirection.ROW_REVERSE);
rv.setLayoutManager(manager);
rv.setAdapter(rvAdapter);
我制作的布局: 如您所见,此布局需要一些工作。结束指示器必须与TextView的最后一行对齐,然后它才能解决问题。现在,您甚至可以处理行单击事件,因为这都是在Recyclerview中完成的。