如何在tablelayout中对齐视图

时间:2015-11-19 09:28:39

标签: android textview tablelayout android-tablelayout

在下面的xml布局中,我想制作一个托管一些textview的表格布局。下面发布的xml布局的结果是每个旁边的四个textview 其他没有间距。我知道我可以使用边距来远离另一个视图,但是我想使用重力方向在视图之间做间距 布局重心。

我想要的结果是

new

我希望tfu在同一位置显示,而不管里程表值的数字位数。换句话说,请考虑以下内容 我不想要的例子

odometer:value space space space space space tfu:val

我想要的是,无论里程表的数字位数如何,tfu textview必须始终在sam位置移位,如下例所示:

odometer:1234567                            tfu:1234567
odometer:1234567890                            tfu:1234567

odometer:1234567                            tfu:1234567
odometer:1234567890121223434                tfu:1234567

please tell me how achieve that.

3 个答案:

答案 0 :(得分:1)

试试这个

<RelativeLayout
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                    >

                        <TextView
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:layout_alignParentLeft="true"/>

                        <TextView
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:layout_alignParentRight="true"/>

                    </RelativeLayout>

这是我正在使用的那个。一个在右边,一个在左边。如果你想要更多,请重复它,并使用边距来调整空间。

答案 1 :(得分:1)

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
android:layout_height="match_parent" android:fitsSystemWindows="true"
tools:context=".MainActivity">

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

    <TableRow
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal"
        android:orientation="horizontal">

        <LinearLayout
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1">
        <TextView
            android:id="@+id/tv_label_odometer"
            android:text="odometer: "/>
        <TextView
            android:id="@+id/tv_odometer"
            android:text="val"/>
    </LinearLayout>
        <LinearLayout
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1">
        <TextView
            android:id="@+id/tv_label_tfu"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_gravity="center_horizontal"
            android:text="tfu: "/>
        <TextView
            android:id="@+id/tv_tfu"/>
        </LinearLayout>
    </TableRow>
</TableLayout>
</RelativeLayout>

添加一个LinearLayout来包装两个TextView,并将其宽度设置为0dp,将layout_weight设置为1.然后两个linearlayout将具有其父宽度的一半,我认为这可以解决您的问题。

答案 2 :(得分:1)

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:fitsSystemWindows="true"
    tools:context=".MainActivity" >

    <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"
            android:layout_gravity="center_horizontal"
            android:orientation="horizontal" >

            <TextView
                android:id="@+id/tv_label_odometer"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="odometer: " />

            <TextView
                android:id="@+id/tv_odometer"
                android:layout_width="0sp"
                android:layout_height="wrap_content"
                android:layout_weight="2"
                android:text="1234567" />

            <TextView
                android:id="@+id/tv_label_tfu"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="tfu: " />

            <TextView
                android:id="@+id/tv_tfu"
                android:layout_width="0sp"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:text="1234567" />
        </TableRow>
    </TableLayout>

</RelativeLayout>