Как центрировать текст по горизонтали и вертикали в TextView? - PullRequest
1848 голосов
/ 11 января 2009

Как отцентрировать текст по горизонтали и вертикали в TextView, чтобы он отображался точно в середине TextView в Android?

Ответы [ 64 ]

9 голосов
/ 03 июня 2013

Вот мой ответ, который я использовал в своем приложении. В центре экрана отображается текст.

<TextView
    android:id="@+id/txtSubject"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:text="@string/subject"
    android:layout_margin="10dp"
    android:gravity="center"
    android:textAppearance="?android:attr/textAppearanceLarge" />
7 голосов
/ 05 июля 2013

Как показывают многие ответы выше, работает отлично.

android:gravity="center"

Если вы хотите отцентрировать его по вертикали:

android:gravity="center_vertical"

или только по горизонтали:

android:gravity="center_horizontal"
6 голосов
/ 07 марта 2016

Высота и ширина TextView - это содержимое переноса, затем текст в текстовом представлении всегда центрируется, затем делается центр в его родительском макете с помощью:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:text="Hello.."/>
</RelativeLayout>

Для LinearLayout также код такой же:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="center">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Hello.."/>
</LinearLayout>

и программным родителем является Java-код RelativeLayout, который во время выполнения использует что-то подобное в вашей деятельности

TextView textView1 =(TextView)findViewById(R.id.texView1);
RelativeLayout.LayoutParams layoutParams = RelativeLayout.LayoutParams)textView1.getLayoutParams();
layoutParams.addRule(RelativeLayout.CENTER_IN_PARENT, RelativeLayout.TRUE);
textView1.setLayoutParams(layoutParams);
6 голосов
/ 06 мая 2013

Просто в своем XML-файле установите гравитацию textview в центр:

<TextView
    android:gravity="center" />
6 голосов
/ 10 февраля 2018

Мы можем достичь этого несколькими способами: -

Метод XML 01

<TextView  
    android:id="@+id/textView"
    android:layout_height="match_parent"
    android:layout_width="wrap_content" 
    android:gravity="center_vertical|center_horizontal"
    android:text="@strings/text"
/>

Метод XML 02

<TextView  
    android:id="@+id/textView"
    android:layout_height="match_parent"
    android:layout_width="wrap_content" 
    android:layout_centerHorizontal="true"
    android:layout_centerVertical="true"
    android:text="@strings/text"
/>

Метод XML 03

<TextView  
    android:id="@+id/textView"
    android:layout_height="match_parent"
    android:layout_width="wrap_content" 
    android:gravity="center"
    android:text="@strings/text"
/>

Метод XML 04

<TextView  
    android:id="@+id/textView"
    android:layout_height="match_parent"
    android:layout_width="wrap_content" 
    android:layout_centerInParent="true"
    android:text="@strings/text"
/>

Java-метод 01

textView.setGravity(Gravity.CENTER_VERTICAL | Gravity.CENTER_HORIZONTAL);

Java-метод 02

textview.setGravity(Gravity.CENTER);

Java-метод 03

textView.setTextAlignment(View.TEXT_ALIGNMENT_CENTER);
6 голосов
/ 30 июня 2017

Вы можете сделать это, чтобы центрировать текст

<TextView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:gravity="center" />
5 голосов
/ 20 сентября 2017

TextView гравитация работает в соответствии с вашим родительским макетом.

LinearLayout

Если вы используете LinearLayout, вы найдете два атрибута гравитации Android: гравитация и Android: макет_ гравитации

android: gravity: представляет зелье макета внутреннего текста TextView, пока android: layout_gravity: представляет позицию TextView в родительском представлении.

enter image description here

Если вы хотите установить текст по горизонтали и вертикали по центру, используйте код ниже

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="300dp"
    android:background="@android:color/background_light"
    android:layout_height="300dp">

    <TextView
        android:layout_width="match_parent"
        android:text="Hello World!"
        android:gravity="center_horizontal"
        android:layout_gravity="center_vertical"
        android:layout_height="wrap_content"
    />
</LinearLayout>

RelativeLayout

Используя RelativeLayout, вы можете использовать свойство ниже в TextView

android: gravity = "center" для текстового центра в TextView.

android: gravity = "center_horizontal" внутренний текст, если вы хотите горизонтально центрировать.

android: gravity = "center_vertical" внутренний текст, если вы хотите, чтобы он был по центру.

android: layout_centerInParent = "true", если вы хотите, чтобы TextView находился в центральной позиции родительского представления. android: layout_centerHor horizontal = "true", если вы хотите, чтобы TextView находился в горизонтальном центре родительского представления. android: layout_centerVertical = "true", если вы хотите, чтобы TextView располагался вертикально в центре родительского представления.

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="300dp"
    android:background="@android:color/background_light"
    android:layout_height="300dp">

    <TextView
        android:layout_width="match_parent"
        android:text="Hello World!"
        android:gravity="center"
        android:layout_centerInParent="true"
        android:layout_height="wrap_content"
    />
</RelativeLayout>
4 голосов
/ 20 мая 2016

android:gravity="center_horizontal" для выравнивания текста по центру по горизонтали. android:gravity="center_vertical" для выравнивания текста по центру по вертикали. android:gravity="center" для выравнивания текста. Центрируйте как вертикально, так и горизонтально.

<TextView
        android:layout_width="match_parent"
        android:gravity="center_horizontal|center_vertical"
        android:layout_height="match_parent" />
4 голосов
/ 17 июня 2016

Попробуйте так, будет работать

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical"
    android:gravity="center_horizontal|center_vertical">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textAlignment="center" />

</LinearLayout>
3 голосов
/ 23 января 2017

Я не думаю, вам действительно нужно это сделать, просто определите ваш TextView в файле макета, как это

<RelativeLayout
    android:layout_width="width"
    android:layout_height="height">
    <TextView
        android:id="@+id/yourid"
        android:layout_centerInParent="true"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Your text" />
</RelativeLayout>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...