如何在 RelativeLayout 中的 TextView 上换行?

How to wrap lines on TextView in RelativeLayout?

我有一个包含 2 列和几行 TextView 的相对布局。我在第二列中显示了一系列长字符串。在高 dpi 设备上,我没有问题,但在低 dpi 设备上,长字符串换行到第二行。这不是问题,只是它与下一行重叠。

如何使行自动调整为所需的行数?

这是我的布局片段

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/tv_left1"
    android:width="100dp"
    android:layout_alignParentLeft="true"
    android:layout_alignParentStart="true" />

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/tv_right1"
    android:layout_alignParentTop="true"
    android:layout_toRightOf="@id/tv_left1"
    android:layout_alignParentRight="true"
    android:layout_alignParentEnd="true" />

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/tv_left2"
    android:width="100dp"
    android:layout_below="@id/tv_left1"
    android:layout_alignParentLeft="true"
    android:layout_alignParentStart="true" />

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/tv_right2"
    android:layout_alignBaseline="@id/tv_left2"
    android:layout_alignBottom="@id/tv_left2"
    android:layout_alignParentRight="true"
    android:layout_alignParentEnd="true"
    android:layout_toRightOf="@id/tv_left2" />

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/tv_left3"
    android:width="100dp"
    android:layout_below="@id/tv_left2"
    android:layout_alignParentLeft="true"
    android:layout_alignParentStart="true" />

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/tv_right3"
    android:layout_alignBaseline="@id/tv_left3"
    android:layout_alignBottom="@id/tv_left3"
    android:layout_alignParentRight="true"
    android:layout_alignParentEnd="true"
    android:layout_toRightOf="@id/tv_left3" />

我还尝试更改我的 TextView,使左 (n) 位于右 (n-1) 的底部而不是右 (n),因为左列是固定的,而右列由一个可变长度的字符串。这在 Android Studio 布局视图中看起来很好,带有故意长字符串,即行在长字符串下方正确开始。它也适用于 Samsung Galaxy S7 (1440x2560) 和 Google Pixel (1080x1920)。但是,当我在 HTC One X (720x1280) 和另一台通用 480x800 设备上尝试时,该行从顶部开始,与许多其他行重叠。

好的,所以我最终使用了带有 shrinkColumns="n" 的 TableLayout,其中 n 是我希望包装的任何列的列索引(从 0 开始)。 RelativeLayout 在旧手机中似乎没有产生可靠的结果。