为什么这个按钮放在这里,而不是在右侧?

时间:2013-07-07 18:22:27

标签: android android-layout android-tablelayout

我正在做Derek Banas的Android开发教程11,我只想将保存按钮移到右侧。

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

    ...

    <TableRow
        android:id="@+id/tableRow7"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" >

        <Button
            android:id="@+id/saveButton"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="right"
            android:text="@string/save_button" />

    </TableRow>

</TableLayout>

以下是它的样子:

add_new_contact.xml

我希望这个按钮位于右侧,为什么会在屏幕中间尴尬停止?

4 个答案:

答案 0 :(得分:1)

Button是您所期望的位置:在该行的第一列的右侧。如果您将表格的layout_gravity设置为"right",那么第一列将在没有第二列的情况下向右推,您将获得所需的效果。

更系统化的方法是在“按钮”之前放置一个视图(没有内容),即。无意地填充该视图的第一列。

我认为您还可以将android:layout_span="2" 添加到Button ,以达到理想的效果。

答案 1 :(得分:1)

<TableRow android:id="@+id/tableRow7"
          android:layout_width="match_parent"
          android:layout_height="wrap_content"
          android:gravity="right">

    <View   android:layout_width="0dp"
            android:layout_height="0dp"/>

    <Button android:id="@+id/addButton"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/save_button"
            android:onClick="addNewContact"/>

</TableRow>

必须在行的第一个单元格中进行操作。例如,您可以生成这样的空视图来实现该功能,或者使用<Button>标记中的其中一个属性。

android:layout_column - 此子项所在列的索引。

android:layout_span - 定义此子项应覆盖的列数。

答案 2 :(得分:0)

我认为这是因为你的行没有跨越两列(虽然奇怪的是按钮的边缘与文本字段的开头重叠),尝试将android:layout_span=2添加到Button的TableRow。

答案 3 :(得分:0)

尝试android:layout_gravity="right"