Нужна помощь по центрированию EditText в линейном макете - PullRequest
5 голосов
/ 24 января 2012

Я пытаюсь центрировать текст редактирования вертикально и горизонтально в линейном макете, но он не работает. Очень простая проблема на самом деле.

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



<EditText
    android:layout_width="150dp"
    android:layout_height="wrap_content"
    android:background="@drawable/loginbutton"
    android:text="Username"
    android:layout_gravity="center"
    android:textSize="25dp"
    android:gravity="center_horizontal|center_vertical"
    android:textColor="#000000"
    android:layout_margin="10dp"
    android:id="@+id/username">
  </EditText>

Я попытаюсь в это время перейти на относительное расположение.

Ответы [ 5 ]

11 голосов
/ 24 января 2012

LinearLayout не поддерживает центрирование в том направлении, в котором оно складывает предметы, насколько я знаю. Если LinearLayout не является решающим (что в вашем случае не должно быть, поскольку вам также необходимо центрирование), я бы порекомендовал вам переключиться на RelativeLayout.
С RelativeLayout вы можете установить атрибут android:layout_centerInParent="true" на EditText, чтобы выровнять его по центру.

1 голос
/ 22 января 2018
LinearLayout 
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:background="@drawable/login"
android:gravity="center"
1 голос
/ 28 декабря 2017

Это очень просто.Добавьте android: gravity = "center" с линейным расположением.

<LinearLayout 
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:gravity="center"
>
1 голос
/ 24 января 2012

Использование силы тяжести влияет на гравитацию содержимого указанного элемента пользовательского интерфейса, это означает (в данном случае), что текст внутри EditText будет центрирован. Чтобы центрировать сам элемент пользовательского интерфейса, вам нужно определить layout_gravity, поскольку это та сила тяжести, которую элемент пользовательского интерфейса удерживает внутри своего родителя. Код, размещенный OP, будет делать горизонтальный центр, но не вертикальный центр.

В качестве альтернативы вы можете использовать RelativeLayout

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@drawable/login"
android:orientation="vertical" >

<EditText
    android:id="@+id/username"
    android:layout_width="150dp"
    android:layout_height="wrap_content"
    android:layout_margin="10dp"
    android:background="@drawable/loginbutton"
    android:layout_centerInParent="true"
    android:text="Username"
    android:textColor="#000000"
    android:textSize="25dp" >
</EditText>

</RelativeLayout>
0 голосов
/ 24 января 2012

Попробуйте это:

 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 android:layout_width="fill_parent"
 android:layout_height="fill_parent"
 android:orientation="vertical" 
 android:background="@drawable/login"
 android:layout_centerVertical="true"
 android:layout_centerInParent="true">
...