如何在RelativeLayout中的TextView上换行?

时间:2017-02-22 01:30:00

标签: android android-layout textview 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布局视图中看起来很好,故意长字符串,即行在长字符串下方正确启动。它也适用于三星Galaxy S7(1440x2560)和Google Pixel(1080x1920)。但是,当我在HTC One X(720x1280)和另一个通用480x800设备上尝试时,该行开始在顶部附近,与许多其他行重叠。

1 个答案:

答案 0 :(得分:0)

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