TableRow中的TextView对齐方式

时间:2013-12-12 10:26:50

标签: android android-xml android-tablelayout

TableLayout中有两个TableRows,每个TableRow包含两个TextView:

<?xml version="1.0" encoding="utf-8"?>
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal" >

    <TableRow
        android:id="@+id/tableRow1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginLeft="10dp"
        android:layout_marginRight="10dp" >

        <TextView
            android:id="@+id/textTime"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" />

        <TextView
            android:id="@+id/textTitle"
            android:layout_width="fill_parent"
            android:layout_height="match_parent"
            android:layout_marginLeft="10dp" />

    </TableRow>

        <TableRow
            android:id="@+id/tableRow2"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginLeft="63dp"
            android:layout_marginRight="10dp" >

            <TextView
                android:id="@+id/textHall"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content" />

            <TextView
                android:id="@+id/textPrice"
                android:layout_width="fill_parent"
                android:layout_height="match_parent"
                android:layout_marginLeft="10dp" />

    </TableRow>

</TableLayout>

如果textHall包含位于正确位置的短WordtextTitleSome Text):

scr1

但如果textHall包含较长的Second Word,则在textTitleSome Text)之前会出现较大的缩进:

scr2

是什么原因?

感谢。

2 个答案:

答案 0 :(得分:3)

您应该为布局和行赋予权重。我改编了你的代码。这是应该的。

<TableRow
    android:id="@+id/tableRow1"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:layout_marginLeft="10dp"
    android:layout_marginRight="10dp"
    android:layout_weight="1"
    android:weightSum="2" >

    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_weight="2"
        android:orientation="horizontal" >

        <TextView
            android:id="@+id/textTime"
            android:layout_width="wrap_content"
            android:layout_height="fill_parent"
            android:text="10:30" />

        <TextView
            android:id="@+id/textTitle"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:layout_gravity="left"
            android:layout_marginLeft="10dp"
            android:text="Some Text" />
    </LinearLayout>
</TableRow>

<TableRow
    android:id="@+id/tableRow2"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_marginLeft="63dp"
    android:layout_marginRight="10dp"
    android:layout_weight="1"
    android:weightSum="2" >

    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_weight="2"
        android:orientation="horizontal" >

        <TextView
            android:id="@+id/textHall"
            android:layout_width="wrap_content"
            android:layout_height="fill_parent"
            android:text="Some Word" />

        <TextView
            android:id="@+id/textPrice"
            android:layout_width="0dp"
            android:layout_height="fill_parent"
            android:layout_marginLeft="10dp"
            android:layout_weight="1"
            android:text="200" />
    </LinearLayout>
</TableRow>

您可以根据需要为第二行添加任何保证金值。

希望这可能会有所帮助。

答案 1 :(得分:1)

您的textHalltextTime都属于同一列,并且该列的宽度设置为textHall的宽度(因为它具有更多宽度),因此textTime当您在textHall中增加文本时,textview的宽度会增加。