Android - Центр Textview в LinearLayout - программирование
Подтвердить что ты не робот

Android - Центр Textview в LinearLayout

Я пытаюсь центрировать TextView в LinearLayout и выравнивается по горизонтали, но не вертикально.

ниже мой код

 <LinearLayout
        android:orientation="vertical"
        android:layout_width="320dp"
        android:layout_height="50dp"
        android:background="@drawable/rectblack"
        android:layout_marginTop="10dp"
        android:layout_gravity="center"
        android:minWidth="25px"
        android:minHeight="25px">
        <TextView
            android:text="Explode a Vin"
            android:gravity="center"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:id="@+id/tvExVin" />
    </LinearLayout>

В конце я хотел бы, чтобы он был центрирован по вертикали слева от LinearLayout, если кто-то мог понять, как это сделать, это было бы здорово.

Спасибо!

4b9b3361

Ответ 1

У вас есть гравитация и маневр. Вы можете иметь несколько значений атрибута тяжести, разделенных символом "|". Попробуйте следующее:

 <LinearLayout
        android:orientation="vertical"
        android:layout_width="320dp"
        android:layout_height="50dp"
        android:background="@drawable/rectblack"
        android:layout_marginTop="10dp"
        android:layout_gravity="center_horizontal"
        android:gravity="center_vertical|left"
        android:minWidth="25px"
        android:minHeight="25px">
        <TextView
            android:text="Explode a Vin"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/tvExVin" />
    </LinearLayout>

Для пояснения:

android:layout_gravity="center_horizontal" будет центрировать LinearLayout горизонтально в своем родителе.

android:gravity="center_vertical|left" будет центрировать TextView (и любые другие дочерние элементы) вертикально внутри LinearLayout и выровнять его влево.

Ответ 2

Попробуйте изменить gravity на

android:layout_gravity="center_vertical"

gravity используется для размещения содержимого внутри ваших View и layout_gravity используется для размещения View внутри его родителя.

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

Кроме того, если нет веской причины, вам не нужно использовать LinearLayout или любого родителя для одного ребенка. Если вы можете дать лучшее объяснение того, что вы хотите или даже скриншот, тогда мы сможем помочь с лучшим решением.

Это даст вам желаемый эффект

<LinearLayout
    android:layout_width="320dp"       <!-- removed orientation (horizontal by default)  -->
    android:layout_height="50dp"
    android:background="@drawable/rectblack"
    android:layout_marginTop="10dp"
    android:layout_gravity="center"
    android:minWidth="25px"
    android:minHeight="25px">
    <TextView
        android:text="Explode a Vin"
        android:layout_gravity="center_vertical"       <!-- changed gravity here  -->
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"           <!-- change to wrap_content -->
        android:id="@+id/tvExVin" />
</LinearLayout>

Ответ 3

<LinearLayout 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"
    android:layout_gravity="center_horizontal|center_vertical"
    android:gravity="center_vertical|center_horizontal"
    android:orientation="vertical" >

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="AppLock Demo"
        android:textSize="30dp" />

</LinearLayout>