水平线性布局与3 textview,其中第二个必须保持居中



这是我自己第一次问问题,所以请耐心点:-)。我有一个水平的LinearLayout,其中我有3个textview。第二个只是一个箭头(UTF-8字符),应该是完全居中的。TextViews只有一行,如果它不适合,它应该被简单地切断。我试图在第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太长,它被切断(如有意的!),但仍然是第二个(箭头-)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。然后在它的周围加上另外两个

试试这个,

给你所有的TextView宽度match_parent而不是wrap_content

 <LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:gravity="center"
    android:orientation="horizontal" >
    <TextView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_weight="1.0"
        android:gravity="center_vertical"
        android:lines="1"
        android:textSize="12sp" />
    <TextView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:gravity="center"
        android:lines="1"
        android:text="→"
        android:textSize="12sp" />
    <TextView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_weight="1.0"
        android:gravity="center_vertical"
        android:lines="1"
        android:textSize="12sp" />
</LinearLayout>

如果可以试试....

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:gravity="center"
    android:orientation="horizontal" >
    <TextView
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="45"
        android:gravity="center_vertical"
        android:lines="1"
        android:textSize="12sp" />
    <TextView
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:lines="1"
        android:layout_weight="10"
        android:text="→"
        android:textSize="12sp" />
    <TextView
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="45"
        android:gravity="center_vertical"
        android:lines="1"
        android:textSize="12sp" />
</LinearLayout>

给出linearlayout weight =3,并在所有这三个TextView中平均分配这个权重。

试试这个,它会为你工作的

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:gravity="center"
    android:weightSum="7"
    android:orientation="horizontal" >
    <TextView
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="3"
        android:gravity="center_vertical"
        android:lines="1"
        android:textSize="12sp" />
    <TextView
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:lines="3"
        android:layout_weight="1"
        android:text="→"
        android:textSize="12sp" />
    <TextView
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="3"
        android:gravity="center_vertical"
        android:lines="1"
        android:textSize="12sp" />
</LinearLayout>

相关内容