2014-07-15 4 views
0

Мое требование - достичь этого в LinearLayout. Он имеет только один вид ребенка. В горизонтальной ориентации кнопка должна быть в центре горизонтали, если установлена ​​layout_gravity. мой макет XML являетсяlayout_gravity кнопки в LinearLayout не работает правильно

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_height="200dp" 
android:background="#ffff00" 
android:layout_width="match_parent" 
android:orientation="horizontal"> 

<Button 
    android:id="@+id/button1" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_gravity="center_horizontal" 
    android:text="Button" /> 

</LinearLayout> 

Но результат, как показано ниже изображения

enter image description here

Что я ожидал это, когда layout_gravity установлен в center_horizontal, кнопки центра к горизонту. Почему это не работает

+0

андроид: layout_gravity = «центр» использовать только центр и ориентацию на вертикальный – Brendon

+0

@Brendon Вы можете разместить ссылку на документация, описывающая это поведение? – Blackbelt

ответ

0

Установить центр горизонтальной силы тяжести к родителю:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_height="200dp" 
    android:background="#ffff00" 
    android:layout_width="match_parent" 
    android:orientation="horizontal" 
    android:gravity="center_horizontal"> 

    <Button 
     android:id="@+id/button1" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="Button" /> 

</LinearLayout> 

или просто изменить родительскую ориентацию на horizontal

+0

любой другой способ достижения этого на уровне ребенка. – AndEngine

2

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

добавить следующий атрибут в LinearLayout

android:gravity="center_horizontal" 
0

На самом деле вы не можете. Корневая компоновка - горизонтальная ориентацияL android:orientation="horizontal". Если вы хотите, чтобы он работал, просто измените ориентацию корня на vertical (я еще не тестировал!)

1

Вы можете достичь его в два метода,

Набор андроида: гравитация = "center_horizontal" в свойствах компоновки

или

Набор андроида: layout_gravity = "центр" в Свойства кнопок

Ваш макет должен быть в вертикальном положении

1

Нам нужно выяснить вопрос:

  • Виджет может использовать только вертикальный атрибут (как top, center_vertical, bottom), когда это использование макета корень orientation: horizontal
  • Виджет можно использовать только горизонтальный атрибут (как left, center_horizontal, right), когда это использование корневого макета orientation: vertical

Так что вам нужно сделать, как это (проверено & работы):

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_height="200dp" 
    android:background="#ffff00" 
    android:layout_width="match_parent" 
    android:orientation="vertical"> 

    <Button 
     android:id="@+id/button1" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_gravity="center_horizontal" 
     android:text="Button" /> 

</LinearLayout> 

Test Image

Смежные вопросы