这是我第一次问自己一个问题,所以请耐心:-)。
我有一个水平的LinearLayout,其中有3个TextViews。
第二个只是一个箭头(UTF-8字符),应该精确地居中。
TextViews仅是1行,如果不合适,则应将其切除。
我尝试在第1个和第3个TextView上使用权重,但是如果1stTextView包含太多文本,则箭头仍会稍微向右移动而不是保持居中(我希望权重能够确保这一点)。
这是我到目前为止尝试过的:

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:gravity="center"
    android:layout_weight="1.0"
    android:orientation="horizontal">

    <TextView
        android:textSize="12sp"
        android:layout_width"wrap_content"
        android:layout_height"wrap_content"
        android:lines="1"
        android:gravity="center_vertical"
        android:layout_weight="1.0"/>

    <TextView
        android:textSize="12sp"
        android:layout_width"wrap_content"
        android:layout_height"wrap_content"
        android:lines="1"
        android:gravity="center"
        android:text="→"/>

    <TextView
        android:textSize="12sp"
        android:layout_width"wrap_content"
        android:layout_height"wrap_content"
        android:lines="1"
        android:gravity="center_vertical"
        android:layout_weight="1.0"/>

</LinearLayout>


在运行时以编程方式设置第一个和第三个TextView的文本。
如果文本足够短,则一切正常。
如果第一个TextView中的文本太长,则会将其剪切(按预期!),但是第二个(Arrow-)TextView仍会在一定程度上向右移动。
我希望箭头保持准确居中,并在必要时将左右两边的文字剪切掉。
谢谢你的帮助。

最佳答案

我将通过RelativeLayout来做到这一点(有效):

<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:gravity="center"
    >
    <TextView
        android:id="@+id/txtArrow"
        android:textSize="12sp"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:lines="1"
        android:gravity="center"
        android:text="?"
        android:layout_centerInParent="true"
    />
    <TextView
        android:textSize="12sp"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:lines="1"
        android:gravity="center_vertical"
        android:layout_toLeftOf="@id/txtArrow"
        android:text="Left"
        android:layout_centerVertical="true"
    />
    <TextView
        android:textSize="12sp"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:lines="1"
        android:gravity="center_vertical"
        android:layout_toRightOf="@id/txtArrow"
        android:text="Right"
        android:layout_centerVertical="true"
    />
</RelativeLayout>


请注意,我首先声明了中央TextView。
然后我添加了其他两个。

关于android - 具有三个TextViews的水平LinearLayout,其中第二个必须居中,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24082751/

10-09 15:59