Android UI如何对齐textviews?

时间:2012-12-28 13:41:17

标签: android xml textview uitextview

我有这种线性布局,在线性布局中我有几个文本视图。 现在我想要做的是在左侧显示信息文本,然后在它旁边显示值,但值应该在最长的信息文本后对齐。

我看不出如何在线性布局中使用另一个线性布局。

            <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginBottom="5dp"
            android:layout_marginLeft="5dp"
            android:orientation="vertical" >

            <TextView
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:background="#ff00ff"
                android:text="Room:"
                android:textSize="12dp" />

            <TextView
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:background="#ff00ff"
                android:text="{value}"
                android:textSize="12dp" />

            <TextView
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:background="#ff00ff"
                android:text="Date:"
                android:textSize="12dp" />

            <TextView
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:background="#ff00ff"
                android:text="{value}"
                android:textSize="12dp" />

            <TextView
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:background="#ff00ff"
                android:text="Time:"
                android:textSize="12dp" />

            <TextView
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:background="#ff00ff"
                android:text="{value}"
                android:textSize="12dp" />

            <TextView
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:background="#ff00ff"
                android:text="Location"
                android:textSize="12dp" />

            <TextView
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:background="#ff00ff"
                android:text="{value}"
                android:textSize="12dp" />
        </LinearLayout>

像html表一样。一个是info文本,另一个是value。 具有文本值的文本视图应在最长的信息文本后对齐。

等效的Html

<table>
<tr>
<td>Room:</td>
<td>{value}</td>
</tr>
<tr>
<td>Date:</td>
<td>{value}</td>
</tr>
...
</table>

除了放入固定的dp宽度之外,是否可以对齐它?

4 个答案:

答案 0 :(得分:1)

像这样,

Room: Value
Date: Value

你可以使用这样的布局,

 <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginBottom="5dp"
            android:layout_marginLeft="5dp"
            android:orientation="vertical" >

     <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginBottom="5dp"
            android:layout_marginLeft="5dp"
            android:orientation="horizontal" >
            <TextView
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:background="#ff00ff"
                android:text="Room:"
                android:textSize="12dp" />

            <TextView
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:background="#ff00ff"
                android:text="{value}"
                android:textSize="12dp" />
      </LinearLayout>
     <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginBottom="5dp"
            android:layout_marginLeft="5dp"
            android:orientation="horizontal" >
            <TextView
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:background="#ff00ff"
                android:text="Date:"
                android:textSize="12dp" />

            <TextView
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:background="#ff00ff"
                android:text="{value}"
                android:textSize="12dp" />
        </LinearLayout>
     <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginBottom="5dp"
            android:layout_marginLeft="5dp"
            android:orientation="horizontal" >
            <TextView
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:background="#ff00ff"
                android:text="Time:"
                android:textSize="12dp" />

            <TextView
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:background="#ff00ff"
                android:text="{value}"
                android:textSize="12dp" />

            <TextView
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:background="#ff00ff"
                android:text="Location"
                android:textSize="12dp" />

            <TextView
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:background="#ff00ff"
                android:text="{value}"
                android:textSize="12dp" />
        </LinearLayout>
        </LinearLayout>

如果你想创建一个像strucutre这样的表,那么你应该看看Table Layout。你会找到一个很好的例子here

答案 1 :(得分:1)

试试此代码

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="fill_parent"
    android:layout_height="match_parent"
    android:background="#0099cc"
    tools:context=".FullscreenActivity" >

    <TableLayout
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:orientation="vertical" >

        <TableRow
            android:layout_width="fill_parent"
            android:layout_height="wrap_content" >

            <TextView
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:background="#ff00ff"
                android:text="Room:"
                android:textSize="12dp" />

            <TextView
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:background="#ff00ff"
                android:text="{value}"
                android:textSize="12dp" />
        </TableRow>

        <TableRow
            android:layout_width="fill_parent"
            android:layout_height="wrap_content" >

            <TextView
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:background="#ff00ff"
                android:text="Date:"
                android:textSize="12dp" />

            <TextView
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:background="#ff00ff"
                android:text="{value}"
                android:textSize="12dp" />
        </TableRow>

        <TableRow
            android:layout_width="fill_parent"
            android:layout_height="wrap_content" >

            <TextView
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:background="#ff00ff"
                android:text="Time:"
                android:textSize="12dp" />

            <TextView
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:background="#ff00ff"
                android:text="{value}"
                android:textSize="12dp" />
        </TableRow>

        <TableRow
            android:layout_width="fill_parent"
            android:layout_height="wrap_content" >

            <TextView
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:background="#ff00ff"
                android:text="Location"
                android:textSize="12dp" />

            <TextView
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:background="#ff00ff"
                android:text="{value}"
                android:textSize="12dp" />
        </TableRow>
    </TableLayout>

</LinearLayout>

答案 2 :(得分:0)

您可以使用TableLayout。请参阅下面的链接以获得清晰度,因为我无法在此处编写完整的代码。

http://mobile.tutsplus.com/tutorials/android/android-sdk_table-layout/

答案 3 :(得分:0)

你可以将textViews放在LinearLayout中,如下面的

        <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_marginBottom="5dp"
                android:layout_marginLeft="5dp"
                android:orientation="vertical" >

    <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:orientation="horizontal" >

                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:background="#ff00ff"
                    android:text="Room:"
                    android:textSize="12dp" />

                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:background="#ff00ff"
                    android:text="{value}"
                    android:textSize="12dp" />
    </LinearLayout>

    // add  the rest of textviews similarly as above
</LinearLayout>