Android XML - 如何将项目对齐到最左侧,中间和最右侧

时间:2010-04-26 01:32:15

标签: xml android layout alignment

我有这个XML代码,它生成一个按钮,一个textview和另一个按钮,如何让按钮显示在最左边,中心的textview和最右边的最后一个按钮?

<?xml version="1.0" encoding="utf-8"?>  
<LinearLayout android:id="@+id/LinearLayout01"
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    xmlns:android="http://schemas.android.com/apk/res/android">

    <Button android:id="@+id/Button01" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:text="Cancel">
    </Button>
    <TextView android:id="@+id/TextView01" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:text="New Place">
    </TextView>
    <Button android:id="@+id/Button03" 
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Save">
     </Button>

</LinearLayout>

3 个答案:

答案 0 :(得分:9)

我建议使用RelativeLayout,它会让事情变得更容易。

通过使用RelativeLayout,您可以将textview设置为父级中心水平或父级中心

在这样做之后,您可以将这些按钮直接连接到远侧,方法是将它们与父侧对齐,或者将它们直接连接到文本视图的侧面,或者添加一个小填充,然后填充你的间距。

答案 1 :(得分:2)

您需要使用权重属性。可以把它想象成让android知道它应该给每个项目的宽度百分比。

您需要将所有3个项目的宽度设置为0dip并添加权重属性

    <Button android:id="@+id/Button01" 
              android:layout_width="wrap_content" 
              android:layout_height="wrap_content" 
              android:text="Cancel"
              android:layout_width="0dip" 
              android:layout_weight="2" >
      </Button>
      <TextView android:id="@+id/TextView01" 
                android:layout_width="wrap_content" 
                android:layout_height="wrap_content" 
                android:text="New Place"
                android:layout_width="0dip" 
                android:layout_weight="1" >
      </TextView>
      <Button android:id="@+id/Button03" 
              android:layout_width="wrap_content"
              android:layout_height="wrap_content"
              android:text="Save"
              android:layout_width="0dip" 
              android:layout_weight="2" >
      </Button>

使用重量值,您将了解它的工作原理:)

在此之后,您可以使用gravity属性将文本移动到中心/左侧或右侧。

答案 2 :(得分:1)

如果你想保留LinearLayout,你需要做的是:创建一个TableRow,然后将所有项目(Both按钮和Textview)放入其中。这将创建一条直线,所有项目整齐排列。这段代码对我有用,对不起我不能张贴它的截图(新的,没有足够的声望点),但它对我有用,我希望它对你有帮助。

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

<TableRow android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="5dp">

<Button android:id="@+id/Button01"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Cancel"
    android:layout_marginRight="30dp"
    android:layout_marginLeft="10dp">
</Button>

<TextView android:id="@+id/TextView01"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="New Place"
    android:layout_gravity="center_horizontal"
    android:layout_marginRight="30dp">
</TextView>

<Button android:id="@+id/Button03"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Save"
    android:layout_gravity="right">
</Button> 
</TableRow> 
</LinearLayout>