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
, если кто-то мог понять, как это сделать, это было бы здорово.
Спасибо!
Ответы
Ответ 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>