我在线性布局中的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>
但是在这里,当我给出上面的代码时,我有三个按钮占据整个空间。
但对齐不合适。他们就像在空中跳舞......
我在哪里弄错了......
还要注意上面的最后一个按钮是不可见的,它的一半隐藏.....
我在UI设计方面确实很弱,任何人都可以建议......
答案 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)
您混合gravity
和layout_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>