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

时间:2016-08-19 06:46:09

标签: android android-layout textview android-measure

我正在寻找有效的方法(仅限最佳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个字符,如果屏幕太多,那么就是椭圆形。

在上面当作者太长时间视图推出日期视图。使用toRightOf时使用toLeftOf / RelativeLayout的情况相同。即使作者只有很少的字符,设置layout_weight=1作者保留日期也会粘在父视图组的右边缘上,所以这是一个很大的空间......我正在寻找一种方法,它将日期与作者的权利对齐即使它是椭圆化的并以...结束我几乎没有想法如何用Java解决它(测量视图或文本画,但似乎都不那么有效......)

4 个答案:

答案 0 :(得分:1)

试试这段代码:

<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>

答案 1 :(得分:0)

android:weightSum = "1"提供给线性布局。 将android:maxWidth="250dp"提供给opinion_author textview。 将android:layout_weight="0.3"提供给opinion_date textview。

如下所示。

<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>

答案 2 :(得分:0)

使用重量!

    <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"为作者提供了两部分

android:layout_weight="1"提供了1个日期部分

玩这些比率直到你感到高兴!

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

答案 3 :(得分:0)

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 child中使用android:layout_weight