Table Row Android中三个按钮的对齐方式

时间:2011-11-14 18:39:27

标签: android android-layout tablelayout

我在线性布局中的Actvity中有三个按钮。 在这里,我希望所有的按钮都应该占据整个表格。 所以我编码如下。

<Linearlayout>
 ......
 <TableLayout
        android:id="@+id/tableLayout2"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_weight="0"
        android:stretchColumns="*">

        <TableRow
            android:id="@+id/tableRow5"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content">
            <Button
                android:id="@+id/registerTwitter"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="Register Twitter" 
                android:gravity="left"/>

            <Button
                android:id="@+id/registerFB"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="Register FaceBook" 
                android:gravity="center"/>

            <Button
                android:id="@+id/clearCredentials"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="Clear Credentials"
                android:layout_gravity="right" />

        </TableRow>
    </TableLayout>
  </LinearLayout>

但是在这里,当我给出上面的代码时,我有三个按钮占据整个空间。

但对齐不合适。他们就像在空中跳舞......

我在哪里弄错了......

This is the part of output i got

还要注意上面的最后一个按钮是不可见的,它的一半隐藏.....

我在UI设计方面确实很弱,任何人都可以建议......

4 个答案:

答案 0 :(得分:1)

Gravity和layout_gravity是按钮上的两个不同字段。

重力改变按钮中文本的位置,layout_gravity改变按钮布局位置

你有一个使用layout_gravity的按钮,另外两个使用gravity。 确保使用正确的!

编辑,这里尝试这段代码,最好使用权重:

<TableRow
    android:id="@+id/tableRow5"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content">
    <Button
        android:id="@+id/registerTwitter"
        android:layout_height="wrap_content"
        android:text="Register Twitter" 
        android:layout_weight=".3" android:layout_width="match_parent" android:gravity="center_horizontal"/>

    <Button
        android:id="@+id/registerFB"
        android:layout_height="wrap_content"
        android:text="Register FaceBook" 
        android:layout_weight=".3" android:layout_width="match_parent" android:gravity="center_horizontal"/>

    <Button
        android:id="@+id/clearCredentials"
        android:layout_height="wrap_content"
        android:text="Clear Credentials"
        android:layout_gravity="right" android:layout_weight=".3" android:layout_width="match_parent" android:gravity="center_horizontal"/>

</TableRow>

答案 1 :(得分:0)

如果我理解正确,你只想让按钮在一行中给出相等的水平空间,然后尝试这样的事情

<?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="fill_parent" >

    ... other views here ...

    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="bottom" >

        <Button
            android:id="@+id/registerTwitter"
            android:layout_width="0dp"
            android:layout_height="fill_parent"
            android:layout_weight="1"
            android:text="Register Twitter" />

        <Button
            android:id="@+id/registerFB"
            android:layout_width="0dp"
            android:layout_height="fill_parent"
            android:layout_weight="1"
            android:text="Register FaceBook" />

        <Button
            android:id="@+id/clearCredentials"
            android:layout_width="0dp"
            android:layout_height="fill_parent"
            android:layout_weight="1"
            android:text="Clear Credentials" />
    </LinearLayout>

</LinearLayout>

这告诉按钮以宽度0开始,并在它们之间平均分配剩余的水平空间。

答案 2 :(得分:0)

您混合gravitylayout_gravity。您应该使用layout_gravity。此外,请注意center值表示水平中心和垂直中心。这可以解释为什么你的中间按钮是垂直关闭的。

答案 3 :(得分:0)

您可以通过在relativelayout而不是linearlayout中实现它来使用它,如下所示

<RelativeLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent">
 <Button 
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:id="@+id/button1"
  android:layout_alignParentLeft="true"
  android:text="Button1"

  />
 <Button 
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:id="@+id/button2"
  android:layout_centerHorizontal="true"
  android:text="Button2"
  />
  <Button 
   android:layout_width="wrap_content"
   android:layout_height="wrap_content"
   android:id="@+id/button3"
   android:layout_alignParentRight="true"
  android:text="Button3"
  />

 </RelativeLayout>