如何在 tablelayout 中对齐视图
how to align views inside tablelayout
在下面的 xml 布局中,我想制作一个 table 布局来承载一些文本视图。下面张贴的 xml 布局的结果是每个旁边有四个 textview
其他无间距。我知道我可以使用边距使每个视图与另一个视图之间的距离有点远,但我想使用重力方向在视图之间留出间距
布局重力。
我想要的结果是
odometer:value space space space space space tfu:val
我希望 tfu 始终显示在同一位置,而不管里程表数值的数字位数。换句话说,考虑以下
我不想有的例子
odometer:1234567 tfu:1234567
odometer:1234567890 tfu:1234567
我想要的是,无论里程表有多少位数,tfu textview 必须始终显示在 sam 位置,如下例所示:
odometer:1234567 tfu:1234567
odometer:1234567890121223434 tfu:1234567
please tell me how achieve that.
代码:
<?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">
<TextView
android:id="@+id/tv_label_odometer"
android:text="odometer: "/>
<TextView
android:id="@+id/tv_odometer"
android:text="val"/>
<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"/>
</TableRow>
</TableLayout>
</RelativeLayout>
试试这个
<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>
这是我正在使用的。一个在右边,一个在左边。如果你想要更多,就重复它,并使用边距调整 space.
<?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.then两个linearlayout将有其父级宽度的一半,我认为这可以解决你的问题。
<?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>
在下面的 xml 布局中,我想制作一个 table 布局来承载一些文本视图。下面张贴的 xml 布局的结果是每个旁边有四个 textview 其他无间距。我知道我可以使用边距使每个视图与另一个视图之间的距离有点远,但我想使用重力方向在视图之间留出间距 布局重力。
我想要的结果是
odometer:value space space space space space tfu:val
我希望 tfu 始终显示在同一位置,而不管里程表数值的数字位数。换句话说,考虑以下 我不想有的例子
odometer:1234567 tfu:1234567
odometer:1234567890 tfu:1234567
我想要的是,无论里程表有多少位数,tfu textview 必须始终显示在 sam 位置,如下例所示:
odometer:1234567 tfu:1234567
odometer:1234567890121223434 tfu:1234567
please tell me how achieve that.
代码:
<?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">
<TextView
android:id="@+id/tv_label_odometer"
android:text="odometer: "/>
<TextView
android:id="@+id/tv_odometer"
android:text="val"/>
<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"/>
</TableRow>
</TableLayout>
</RelativeLayout>
试试这个
<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>
这是我正在使用的。一个在右边,一个在左边。如果你想要更多,就重复它,并使用边距调整 space.
<?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.then两个linearlayout将有其父级宽度的一半,我认为这可以解决你的问题。
<?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>