在不同布局中的视图之间设置对齐属性

时间:2012-10-19 23:27:19

标签: android xml

我正在为我的应用创建一个XML布局,我需要在文本下方对齐一个按钮,但是因为我使用了一个LinearLayout将一些文本与属性权重对齐,所以按钮保持不同的布局,现在我定义了属性“android:layout_below”,它没有找到文本的ID。 那么,有人有任何建议可以在不使用Java的情况下解决这个问题吗?

这是我的代码:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent" >

<LinearLayout 
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:weightSum="3" >

<TextView
    android:id="@+id/text1"
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:layout_weight="1"
    android:gravity="center"
    android:text="text1"
    android:textAppearance="?android:attr/textAppearanceLarge" />

<TextView
    android:id="@+id/text2"
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:layout_weight="1"
    android:gravity="center"
    android:text="text2"
    android:textAppearance="?android:attr/textAppearanceLarge" />

<TextView
    android:id="@+id/text3"
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:layout_weight="1"
    android:gravity="center"
    android:text="text3"
    android:textAppearance="?android:attr/textAppearanceLarge" />

</LinearLayout>

<Button
    android:id="@+id/button"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignLeft="@+id/text1"
    android:layout_alignParentLeft="true"
    android:layout_below="@+id/text1"
    android:gravity="center"
    android:text="Button" />

</RelativeLayout>

编辑: 该按钮必须与text1对齐,这个想法是使用三个属性:align_left,align_right和align_below,因此按钮具有相同的文本宽度。我还有其他观点可以用文本设置属性。

1 个答案:

答案 0 :(得分:0)

您可以为LinearLayout设置ID:

<LinearLayout 
    android:id="@+id/text"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:weightSum="3" >

并使用

将按钮置于布局下
android:layout_below="@+id/text"

要对齐第一个文本下的按钮,您可以将text1和按钮包含在垂直线性布局中:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="wrap_content" >

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="fill_parent"
    android:weightSum="3" >

<LinearLayout
    android:layout_width="0dp"
    android:layout_height="match_parent"
    android:layout_weight="1"
    android:orientation="vertical" >

    <TextView
        android:id="@+id/text1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:gravity="center"
        android:text="text1"
        android:textAppearance="?android:attr/textAppearanceLarge" />

    <Button
        android:id="@+id/button"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:text="Button" />

</LinearLayout>

   <TextView
      android:id="@+id/text2"
      android:layout_width="0dp"
      android:layout_height="wrap_content"
      android:layout_weight="1"
      android:gravity="center"
      android:text="text2"
      android:textAppearance="?android:attr/textAppearanceLarge" />

   <TextView
      android:id="@+id/text3"
      android:layout_width="0dp"
      android:layout_height="wrap_content"
      android:layout_weight="1"
      android:gravity="center"
      android:text="text3"
      android:textAppearance="?android:attr/textAppearanceLarge" />

   </LinearLayout>

  </RelativeLayout>