Android XML - как выровнять элементы по левому, центральному и правому краям - PullRequest
3 голосов
/ 26 апреля 2010

У меня есть этот 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 голосов
/ 26 мая 2010

Я бы порекомендовал использовать RelativeLayout, это намного облегчает жизнь.

с помощью RelativeLayout вы сможете установить текстовое представление либо по горизонтали в родительском, либо по центру родительского

после этого вы сможете либо прикрепить эти кнопки непосредственно к дальним сторонам, выровняв их по родительским сторонам, либо прикрепив их непосредственно к сторонам текстового представления, возможно, добавив немного отступов, и вы получите свой интервал.

2 голосов
/ 26 апреля 2010

Вам необходимо использовать свойство веса. Думайте об этом как о том, что андроид знает процент ширины, который он должен дать каждому элементу.

вам нужно установить ширину 0dip для всех 3 элементов и добавить свойство веса

    <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 для перемещения текста в центр / влево или вправо.

1 голос
/ 24 мая 2015

Если вы хотите сохранить LinearLayout, вам нужно сделать следующее: создать TableRow, а затем поместить в него все элементы (и кнопки, и текстовое представление). это создаст одну прямую линию со всеми аккуратно расположенными элементами. Этот код сработал для меня, извините, я не могу создать его снимок экрана (новый, недостаточно очков репутации), но он сработал для меня, надеюсь, он вам поможет.

<?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>
...