具有不同文本长度的 TextView 在旁边水平对齐

TextView with different text lengths aligning next to horizontally

我正在寻找有效的方法(最好只 XML)水平对齐两个 TextView,如下所示:

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal">
        <TextView
            android:id="@+id/opinion_author"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:ellipsize="end"
            android:lines="1"
            android:maxLines="1"/>
        <TextView
            android:id="@+id/opinion_date"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:lines="1"
            android:maxLines="1"/>
    </LinearLayout>

opinion_date 的长度始终为 ~50-70dp,并且必须完全可见并与 opinion_author 右侧对齐。作者可能有 0-255 个字符,如果对于屏幕而言太多,则将其省略。

在上面,当作者太长的视图正在推出日期视图。使用 RelativeLayout 时使用 toRightOf/toLeftOf 的情况相同。为作者设置 layout_weight=1 将日期保持在父视图组的右边缘,即使作者只有几个字符,所以有很多 space...我正在寻找一种对齐日期的方法在作者的右边,即使它被椭圆化并以...结尾我几乎不知道如何在 Java 中解决它(测量视图或 textpaint,但一切似乎都不是那么有效...)

试试这个代码:

<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:shrinkColumns="0">
<TableRow
    android:gravity="center_horizontal">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:ellipsize="end"
        android:gravity="center"
        android:lines="1"
        android:singleLine="true" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginLeft="10dp"
        android:layout_marginStart="10dp"
        android:ellipsize="none"
        android:gravity="center"
        android:lines="1"
        android:singleLine="true" />
</TableRow>

为您的线性布局添加 android:weightSum = "1"。 将 android:maxWidth="250dp" 赋给 opinion_author textview。 给 android:layout_weight="0.3" 给 opinion_date 文本视图。

如下所示。

<LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:weightSum="1"
        android:orientation="horizontal">
        <TextView
            android:id="@+id/opinion_author"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:ellipsize="end"
            android:maxWidth="250dp"
            android:lines="1"
            android:maxLines="1"/>
        <TextView
            android:id="@+id/opinion_date"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:lines="1"
            android:layout_weight="0.3"
            android:maxLines="1"/>
    </LinearLayout>

使用权重!

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        android:weightSum="3">
        <TextView
            android:id="@+id/opinion_author"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:ellipsize="end"
            android:lines="1"
            android:maxLines="1"
            android:layout_weight="2"/>
        <TextView
            android:id="@+id/opinion_date"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:lines="1"
            android:maxLines="1"
            android:layout_weight="1"/>
    </LinearLayout>

示例:

android:weightSum="3" 分为 3 个部分

android:layout_weight="2" 给作者 2 个部分

android:layout_weight="1" 给出 1 部分到日期

玩比率直到你满意为止!

(哦,android:layout_width="0dp" 因为 layout_weights 覆盖了它们)

android:layout_width

中设置大小

喜欢:

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal">
    <TextView
        android:id="@+id/opinion_author"
        android:layout_width="200dp"
        android:layout_height="wrap_content"
        android:ellipsize="end"
        android:lines="1"
        android:maxLines="1"/>
    <TextView
        android:id="@+id/opinion_date"
        android:layout_width="200dp"
        android:layout_height="wrap_content"
        android:lines="1"
        android:maxLines="1"/>
</LinearLayout>

您可以在 LinearLayout 子项中使用 android:layout_weight