如何在 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 在旧手机中似乎没有产生可靠的结果。
我有一个包含 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 在旧手机中似乎没有产生可靠的结果。