Android XML - 如何使项目左对齐、居中和右对齐

3

我有这样一个XML代码,它生成一个按钮、一个文本视图和另一个按钮,我该如何使左侧的按钮出现在最左边,中间的文本视图居中,最后一个按钮在最右边?

<?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个回答

9
我建议使用RelativeLayout,它可以让事情变得更加容易。
通过使用RelativeLayout,您可以将TextView设置为水平居中或垂直居中。
在这样做之后,您可以通过将它们与父视图的边缘对齐或直接将它们附加到TextView的两侧来直接将这些按钮附加到远端。添加一点填充,也许就完成了您的间距设置。

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>

调整权重值,你就会理解它的工作原理 :)

之后,你可以使用重力属性将文本移动到中心/左侧或右侧。


1
如果你想保留LinearLayout,你需要做的是:创建一个TableRow,然后将所有项目(包括按钮和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>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接