Как центрировать текст по горизонтали и вертикали в TextView?

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

установите для layout_width и layout_height значение fill_parent, затем установите для гравитации значение center. Это поможет

Amila 25.06.2015 12:39

fill_parent теперь устарел, поэтому используйте MATCH_PARENT в layout_width и layout_height и установите гравитацию TextView в центр.

Bilal Ahmad 30.06.2018 12:58
2 136
2
1 322 072
67
Перейти к ответу Данный вопрос помечен как решенный

Ответы 67

Ответ принят как подходящий

Я предполагаю, что вы используете макет XML.

<TextView  
    android:layout_width = "match_parent" 
    android:layout_height = "match_parent" 
    android:gravity = "center"
    android:text = "@string/**yourtextstring**"
/>

Вы также можете использовать гравитационный center_vertical или center_horizontal в соответствии с вашими потребностями.

и как прокомментировал @stealthcopter в java: .setGravity(Gravity.CENTER);

Это не работает при использовании с RelativeLayout, где высота и ширина макета установлены на wrap_content.

Rob 17.08.2011 23:00

@Rob, если ширина и высота равны wrap_content, то технически текст уже центрирован.

JoJo 17.11.2011 08:06

Если я хочу выровнять TextView относительно другого представления, но текст центрирован сам по себе?

user517491 11.03.2012 01:43

Если вы такой же минималист, как я, можете отбросить теги макета.

Eugene van der Merwe 24.07.2012 00:20

У меня это не работает (android:gravity = "center"). Он по-прежнему отображается в крайнем левом углу экрана. :(

uSeRnAmEhAhAhAhAhA 20.09.2013 12:00

похоже, что ваши ширина и высота Textviews установлены на wrap_content. Если это так, вы можете установить layout_gravity в центр

Daniel Jonker 09.07.2014 08:15

Не путать с android:layout_gravity = "center", который делает что-то еще.

Rudi Kershaw 22.12.2014 17:28

В относительной компоновке, если вы установите: android:layout_width = "wrap_content", android:layout_height = "wrap_content" и android:gravity = "center", это работает для меня.

bheatcoker 19.03.2015 13:04

гравитация = центр не работает. Высота текстового изображения = 34 dp и ширина = 100 dp. Пожалуйста, помогите

user3207655 03.11.2015 09:18

Не забывайте, есть еще center_veritcal и center_horizontal.

Jeel Shah 13.08.2016 19:55

@ Роб, относительный макет предоставляет android: layout_centerInParent = "true"

Vasant 26.08.2016 08:05

вы также можете вручную установить высоту и ширину на определенное значение, чтобы реализовать гравитацию.

Moses Aprico 07.09.2016 08:51

Мне нужно было убедиться, что высота была установлена ​​на match_parent, прежде чем я смогу заставить gravity = "center" работать вертикально в дополнение к работе по горизонтали. (потому что, если бы я оставил его как wrap-content, даже если бы контент находился в углу родительского элемента, он не «выглядел» так, как будто он был центрирован, хотя технически это было так, но высота была меньше, чем у родительского элемента)

jungledev 20.02.2017 20:40

Ключ - android:layout_height = "match_parent" и android:gravity = "center". Если высота равна "wrap_content", это не сработает.

CoolMind 28.02.2018 11:47

Это центрирует TextView, вопрос в том, как центрировать текст внутри TextView, и я считаю, что ответ: - android:textAlignment = "center"

gareth 14.11.2019 14:39

Вы также можете настроить его динамически, используя:

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

Или просто textview.setGravity (Gravity.CENTER);

Amplify91 07.04.2011 20:00

Каковы критерии суждения, чтобы решить, какой способ выбрать, писать в xml или писать в файл Java?

kenju 20.08.2015 11:49

@Kenju, если вы хотите, чтобы его можно было легко редактировать и значение не менялось во время выполнения: XML. Если вы должны изменить значение в реальном времени (например, изменить выравнивание, когда пользователь нажимает кнопку), вы можете сделать это только через Java.

Gustavo Maciel 06.11.2015 03:38

@GustavoMaciel, так что в основном xml, если его не нужно динамически изменять ... Теперь я понял. Спасибо за простой и полезный ответ!

kenju 06.11.2015 03:46
android:gravity = "center" 

Это поможет

Чтобы это работало, текстовое представление должно быть match_parent или fill_parent. Если его содержимое обернуть, то оно не будет центрировано.

Kalel Wade 18.08.2014 19:59

@KalelWade: центрирование текста в текстовом представлении с помощью wrap_content вообще не имеет смысла. Возможно, вы думаете о центрировании текстового представления в родительском представлении, и в этом случае вы просто помещаете эту строку в родительский.

Mooing Duck 26.02.2016 23:42

@Mooing Duck Таким образом, причина не использовать перенос содержимого - это не имеет смысла. Но когда вы либо справляетесь и вставляете, либо просто торопитесь, вы не можете сложить два и два вместе. Вот почему я упомянул об этом.

Kalel Wade 27.02.2016 01:04

если TextView с шириной и высотой, равной «wrap_content», находится внутри LinearLayout с шириной и высотой «match_parent», тогда вам необходимо установить layout_gravity Linear_layout.

Faisal Naseer 01.02.2017 19:08

@MooingDuck, когда высота равна «wrap_content», а гравитация - «center_vertical», в дизайне (предварительный просмотр) он рисуется по центру, но на устройстве он располагается вверху. Так что сделайте высоту match_parent и установите гравитацию на center_vertical или center.

CoolMind 28.02.2018 11:45

Если вы используете TableLayout, не забудьте также установить центр тяжести TableRows. Иначе не получится. По крайней мере, у меня это не сработало, пока я не установил центр тяжести TableRow.

Например, вот так:

<TableRow android:id = "@+id/tableRow2" android:layout_width = "wrap_content" android:layout_height = "wrap_content" android:gravity = "center">        
    <TextView android:text = "@string/chf" android:id = "@+id/tv_chf" android:layout_weight = "2" android:layout_height = "wrap_content" android:layout_width = "fill_parent" android:gravity = "center"></TextView>        
</TableRow>

Интересно. Необходимо проверить, действительно ли это для LinearLayout (родительский элемент TableRow).

Martin 11.08.2014 21:28
android:layout_centerInParent = "true"

Это работает при использовании с RelativeLayout, где высота и ширина макета установлены на wrap_content.

Это центрирует TextView, а не текст в нем.

anthropomo 12.01.2013 08:08

Это НЕ работает, если в TextView есть перенос слов. Текст будет полноширинным, многострочным и выровненным по левому краю в пределах TextView. На дисплее он будет выровнен по левому краю. Вы должны использовать «гравитацию», как указано в других ответах.

David Manpearl 13.04.2013 07:04

Вам нужно установить TextView Gravity (центр по горизонтали и центр по вертикали) следующим образом:

android:layout_centerHorizontal = "true"   

а также

android:layout_centerVertical = "true"

И динамически используя:

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

Семантика кода неправильная. Замените layout_centerhorizontal и layout_centervertical на layout_centerHorizontal и layout_centerVertical («H» и «V» в верхнем регистре, иначе это не сработает).

yugidroid 31.07.2012 20:15

layout_ * сообщает родителю View, где он хочет быть. Без layout_ * сообщает View, как разместить его компоненты

Dandre Allison 08.10.2012 11:36

Если вы пытаетесь центрировать текст в TableRow в TableLayout, вот как я этого добился:

<TableRow android:id = "@+id/rowName"
          android:layout_width = "wrap_content"
          android:layout_height = "wrap_content"
          android:padding = "5dip" >
    <TextView android:id = "@+id/lblSomeLabel"
              android:layout_width = "fill_parent"
              android:layout_height = "fill_parent"
              android:gravity = "center"
              android:layout_width = "0dp"
              android:layout_weight = "100"
              android:text = "Your Text Here" />
</TableRow>

По моему мнению,

android:gravity = "center"

Это лучше чем,

android:layout_centerInParent = "true"

что лучше, чем

android:layout_centerHorizontal = "true"
android:layout_centerVertical = "true"

хотя бы для форматирования текста.

В RelativeLayout с ним будет приятно.

И еще Button и что угодно еще можно добавить.

Следующее работает для меня хорошо.

<RelativeLayout xmlns:android = "http://schemas.android.com/apk/res/android"
    android:layout_width = "fill_parent"
    android:layout_height = "fill_parent"
    android:background = "#ff314859"
    android:paddingLeft = "16dp"
    android:paddingRight = "16dp">
    <TextView 
        android:id = "@+id/txt_logo"
        android:layout_width = "fill_parent"
        android:layout_height = "wrap_content"
        android:text = "your text here"
        android:textSize = "30dp"
        android:gravity = "center"/>

        ...other button or anything else...

</RelativeLayout>

Вы также можете использовать комбинацию:

android:gravity = "left|center"

Затем, если ширина textview больше, чем «fill_parent», текст все равно будет выровнен по левому краю (не по центру, как с гравитацией, установленной только в «center»).

Вы можете просто установить gravity вашего текстового представления в CENTER.

Просто в вашем XML-файле установите гравитацию текстового представления в центр:

<TextView
    android:gravity = "center" />

Применить гравитацию:

TextView txtView = (TextView) findViewById(R.id.txtView);
txtView.setGravity(Gravity.CENTER_HORIZONTAL);

По вертикали:

txtView.setGravity(Gravity.CENTER_VERTICAL);

В XML:

<TextView      
    android:layout_width = "fill_parent" 
    android:layout_height = "fill_parent" 
    android:gravity = "center"
    android:text = "@string/Hello_World"        
/>

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

<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" />

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

android:gravity = "center"

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

android:gravity = "center_vertical"

или просто по горизонтали:

android:gravity = "center_horizontal"

Хотя использование гравитации работает для TextView, на уровне API 17 реализован альтернативный метод -

textView.setTextAlignment(View.TEXT_ALIGNMENT_CENTER);

Не знаю разницы, но тоже работает. Однако только для уровня API 17 или выше.

Разница описана здесь: stackoverflow.com/questions/16196444/…

jasdefer 10.07.2015 11:08

Это действительно центрирует текст в TextView. Если вы просто используете гравитацию, есть небольшое отступление в зависимости от текста ... Например, если у вас есть маленький значок в виде кружка с текстом в центре, вы можете увидеть очень очевидную разницу.

tarrball 27.12.2019 01:18

Используйте в файле XML.

Файл макета

<TextView
    android:layout_width = "fill_parent"
    android:layout_height = "fill_parent"
    android:gravity = "center"
    android:text = "@string/stringtext"/>

или же:

Используйте это внутри класса Java

TextView textView =(TextView)findViewById(R.id.texviewid);
textView.setGravity(Gravity.CENTER_VERTICAL | Gravity.CENTER_HORIZONTAL);

Используйте это для относительного макета

android:layout_centerInParent = "true"

и для другого макета

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

Вы пробовали этот способ?

<TextView
android:id = "+@id/txtVw"
android:gravity = "center"
/>

Это можно сделать двумя способами.

Первый в XML-коде. Обратите внимание на атрибут Gravity. Вы также можете найти этот атрибут в графическом редакторе; это может быть проще, чем РЕДАКТОР XML.

<TextView  
    android:layout_width = "fill_parent" 
    android:layout_height = "fill_parent" 
    android:gravity = "center_vertical|center_horizontal"
    android:text = "Your Text"
/>

Для вашего конкретного сценария значения силы тяжести будут:

center_vertical|center_horizontal

В графическом редакторе вы найдете все возможные значения, даже увидите их результаты.

Для линейного макета: В XML используйте что-то вроде этого

<TextView  
    android:id = "@+id/textView1"
    android:layout_width = "fill_parent" 
    android:layout_height = "fill_parent" 
    android:gravity = "center_vertical|center_horizontal"
    android:text = "Your Text goes here"
/>

Чтобы сделать это во время выполнения, используйте что-то подобное в своей деятельности

TextView textView1 =(TextView)findViewById(R.id.texView1);
textView1.setGravity(Gravity.CENTER_VERTICAL | Gravity.CENTER_HORIZONTAL);

Для относительного макета: в XML используйте что-то вроде этого

<TextView  
    android:id = "@+id/textView1"
    android:layout_width = "fill_parent" 
    android:layout_height = "fill_parent" 
    android:layout_centerInParent = "true"
    android:text = "Your Text goes here"
/>

Чтобы сделать это во время выполнения, используйте что-то подобное в своей деятельности

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);

Если вы используете относительную компоновку:

  <TextView
    android:layout_width = "wrap_content"
    android:layout_height = "wrap_content"
    android:text = "@string/stringname"
    android:layout_centerInParent = "true"/>

Если вы используете LinearLayout

<TextView
    android:layout_width = "wrap_content"
    android:layout_height = "wrap_content"
    android:text = "@string/stringname"
    android:layout_gravity = "center"/>

Самый простой способ (который, на удивление, упоминается только в комментариях, поэтому я публикую в качестве ответа):

textview.setGravity(Gravity.CENTER)

Если высота и ширина TextView's равны wrap content, тогда текст в TextView всегда будет по центру. Но если ширина TextView's равна match_parent, а высота - match_parent или wrap_content, вам необходимо написать следующий код:

Для RelativeLayout:

<?xml version = "1.0" encoding = "utf-8"?>
<RelativeLayout xmlns:android = "http://schemas.android.com/apk/res/android"
    android:layout_width = "match_parent"
    android:layout_height = "match_parent">

    <TextView
        android:layout_width = "match_parent"
        android:layout_height = "wrap_content"
        android:gravity = "center" 
        android:text = "Hello World" />

</RelativeLayout>

Для LinearLayout:

<?xml version = "1.0" encoding = "utf-8"?>
<LinearLayout xmlns:android = "http://schemas.android.com/apk/res/android"
    android:layout_width = "match_parent"
    android:layout_height = "match_parent">

    <TextView
        android:layout_width = "match_parent"
        android:layout_height = "wrap_content"
        android:gravity = "center"
        android:text = "Hello World" />

</LinearLayout>

Высота и ширина 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);

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" />

Попробуйте так, это сработает

            <LinearLayout
                android:layout_width = "match_parent"
                android:layout_height = "wrap_content"
                android:orientation = "vertical"
                android:gravity = "center">
              
                    <TextView
                    android:layout_width = "wrap_content"
                    android:layout_height = "wrap_content"
                    android:textAlignment = "center"
                    />

            </LinearLayout>
<TextView
        android:layout_width = "wrap_content"
        android:layout_height = "wrap_content"
        android:textSize = "25dp"
        android:textStyle = "bold"
        android:textAppearance = "?android:attr/textAppearanceMedium"
        android:text = "Tours"
        android:id = "@+id/textView" />

И для тех, кто задается вопросом, как центрировать его по вертикали в элементе TextView, сохраняя при этом слева (по горизонтали):

android:gravity = "center"
android:textAlignment = "viewStart"

Установите атрибут гравитации в файле макета как android:gravity = "center"

center text

<LinearLayout
        android:layout_width = "match_parent"
        android:orientation = "vertical"
        android:gravity = "center"
        android:layout_height = "wrap_content">
    <TextView
            android:id = "@+id/failresults"
            android:layout_width = "fill_parent"
            android:layout_height = "wrap_content"
            android:layout_marginTop = "3dp"
            android:gravity = "center_vertical|center_horizontal"
            android:text = ""
            android:textSize = "12sp" />
</LinearLayout>

если у вас есть текстовое представление внутри linearlayout, вам нужно установить их гравитацию по центру

There are 2 ways to do this :

1. From Xml
     use :  
        <TextView
         .........
        android:gravity = "center"/>

2. From Java class
    use : 

     [textview].setGravity(Gravity.CENTER);

используйте приведенный ниже код в xml, он сработал для меня, вы можете изменить ориентацию, которую он будет в центре

<LinearLayout
        android:layout_width = "match_parent"
        android:orientation = "horizontal"
        android:background = "@color/colorPrimaryDark"
        android:gravity = "center"
        android:layout_height = "wrap_content">
        <TextView
            android:id = "@+id/id_text"
            android:layout_width = "wrap_content"
            android:textSize = "18sp"
            android:textColor = "@android:color/white"
            android:textStyle = "normal"
            android:layout_height = "wrap_content"
            android:text = "centre me"/>
    </LinearLayout>

Я не думаю, что вам действительно нужно это сделать, просто определите свой 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>

Если вы работаете с RelativeLayout, попробуйте использовать это свойство внутри тега TextView:

android:layout_centerInParent= true

«Истина» должна быть заключена в кавычки.

Mason 19.04.2017 21:02

Используйте android:gravity = "center" для решения вашей проблемы.

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

<TextView
        android:layout_width = "match_parent"
        android:layout_height = "match_parent"
        android:gravity = "center" />

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

<TextView  
    android:layout_width = "match_parent" 
    android:layout_height = "match_parent" 
    android:gravity = "center"
/>

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

LinearLayout:

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

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

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

<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_centerHorizontal = "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>

Кстати, по какой причине вы откатились на предыдущую ревизию? Исправленная ревизия является хорошей практикой, так как то, что упомянул редактор, может помочь текстовым редакторам с кодировкой.

Edric 27.03.2019 15:12

Вы можете центрировать текстовое представление с помощью android: gravity = "center"

Код выглядит следующим образом

    <TextView
     android:text = "@string/yourText"
     android layout_height = "wrap_content"
     android layout_height = "wrap_content"
     android:gravity = "center" />

Если этот TextView не имеет атрибутов высоты / ширины, установленных на wrap_content, просто используйте android:gravity = "center". Но некоторые люди жалуются, что это не работает. Это потому, что их расположение не имеет такой же тяжести. Вы можете установить

android:layout_gravity = "center"В ТЕКСТЕВЬЮ (это применимо только к TextView)

или же

android:gravity = "center"В ПЛАНЕ РОДИТЕЛЯ (это будет применяться ко всем представлениям внутри него)

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

В линейном макете

<TextView
android:layout_width = "wrap_content"
android:layout_height = "wrap_content"
android:text = "Text In Center"
android:layout_gravity = "center"
android:gravity = "center"/>

В относительной компоновке

<TextView
android:layout_width = "match_parent"
android:layout_height = "match_parent"
android:text = "Text In Center"
android:layout_centerInParent= true/>

В ConstraintLayout для любого представления:

(Когда вы используете макет ограничения, установите для высоты и ширины значение 0 и позвольте ограничению управлять границами просмотра.)

<View
    android:layout_width = "0dp"
    android:layout_height = "0dp"
    app:layout_constraintBottom_toBottomOf = "parent"
    app:layout_constraintLeft_toLeftOf = "parent"
    app:layout_constraintRight_toRightOf = "parent"
    app:layout_constraintTop_toTopOf = "parent" />

How to center a view or its content e.g. TextView or Button horizontally and vertically? layout_gravity can be used to position a view in the center of its parent. While gravity attribute is used to position view’s content e.g. “text” in the center of the view.

(1) Центрировать TextView по горизонтали

<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:orientation = "vertical"
       android:layout_margin = "10dp"
    tools:context = ".MainActivity" >

    <TextView
        android:layout_width = "wrap_content"
        android:layout_height = "wrap_content"
        android:text = "Hello World!"
        android:layout_gravity = "center"
        android:background = "#333"
        android:textColor = "#fff"
        />

</LinearLayout>

(2) Центрировать TextView по вертикали

android:layout_gravity=”center_vertical” dose not work!!

Чтобы центрировать TextView по вертикали, вам нужно сделать хитрость. Поместите TextView в RelativeLayout, затем установите атрибут TextView android: layout_centerInParent = ”true”

<RelativeLayout 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:orientation = "vertical"
       android:layout_margin = "10dp"
    tools:context = ".MainActivity" >

    <TextView
        android:layout_width = "fill_parent"
        android:layout_height = "wrap_content"
        android:text = "Hello World!"
        android:layout_centerInParent = "true"
        android:layout_gravity = "center_vertical"
        android:gravity = "center"
        android:background = "#333"
        android:textColor = "#fff"
        />

</RelativeLayout>

(3) Центрировать текст по горизонтали

android:gravity=”center_horizontal"

(4) Центрировать текст по горизонтали и вертикали

android:gravity=”center” this will center the text horizontally and vertically

<TextView
    android:layout_width = "fill_parent"
    android:layout_height = "100dp"
    android:text = "Hello World!"
    android:gravity = "center"
    android:background = "#333"
    android:textColor = "#fff"
    />

Скажем, Full Textview на экране

 <TextView
    android:layout_width = "match_parent"
    android:layout_height = "match_parent"
    android:text = "Hello World!"
    android:gravity = "center"
    />

Скажем, Textview (не полный) в относительном макете

<TextView
    android:layout_width = "wrap_content"
    android:layout_height = "wrap_content"
    android:text = "Hello World!"
    android:layout_centerInParent=true
    />

Скажем, Textview (не полный) в Linear_layout

<TextView
    android:layout_width = "wrap_content"
    android:layout_height = "wrap_content"
    android:text = "Hello World!"
    android:layout_gravity = "centre"
    />

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

XML method 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 method 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 method 03

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

XML method 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 method 01

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

Java method 02

textview.setGravity(Gravity.CENTER);

Java method 03

textView.setTextAlignment(View.TEXT_ALIGNMENT_CENTER);

С помощью файла .xml гравитацию можно установить по центру следующим образом

<TextView  
    android:layout_width = "match_parent" 
    android:layout_height = "match_parent" 
    android:gravity = "center"
    android:text = "In the center"
/>

Через java вы можете решить свою конкретную проблему.

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

Используйте свойство Gravity в TextView, чтобы центрировать текст по вертикали и горизонтали.

android:gravity = "center"
<TextView  
android:layout_width = "match_parent" 
android:layout_height = "match_parent" 
android:gravity = "center"
android:text = "In the center"/>

Выше необходимо установить его с помощью файла .xml.

но я предпочитаю версию java, потому что при необходимости вы также можете отключить ее в коде в рабочем состоянии. Ниже приведен код Java.

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

используйте android: gravity = "center" для родительского

<LinearLayout
    android:layout_width = "200dp"
    android:layout_height = "200dp"

    android:gravity = "center"
    >
    <TextView
        android:layout_width = "match_parent"
        android:layout_height = "wrap_content"
        android:gravity = "center"
        android:text = "Hello world"
        />
</LinearLayout>

Вот решение.

<TextView  
       android:layout_width = "match_parent" 
       android:layout_height = "match_parent" 
       android:gravity = "center"
       android:text = "**Your String Value**" />

Вы можете установить гравитацию по центру по вертикали и текст по центру.

<TextView
     android:text = "@string/yourText"
     android layout_height = "wrap_content"
     android layout_height = "wrap_content"
     android:gravity = "center_vertical"
     android:textAlignment = "center" />

Для этого можно поменять android:gravity.

android:gravity = "center" или

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

android:gravity = "center_horizontal"

android:gravity = "center_vertical"

Вы можете сделать это программно в java с помощью: textview.setGravity (Gravity.CENTER);

android:gravity = "centre" 

Это поможет вам центрировать текстовое изображение.

Вы должны установить Gravity следующим образом:

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

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

<TextView
    android:layout_width = "match_parent"
    android:layout_height = "match_parent"
    android:gravity = "center" />
 <android.support.constraint.ConstraintLayout 
    xmlns:android = "http://schemas.android.com/apk/res/android"
    android:layout_width = "match_parent"
    android:layout_height = "match_parent"
    xmlns:app = "http://schemas.android.com/apk/res-auto">


       <TextView
            android:layout_width = "wrap_content"
            android:layout_height = "wrap_content"
            android:text = "HELLO"
            android:textColor = "@color/colorPrimaryDark"
            app:layout_constraintEnd_toEndOf = "parent"
            app:layout_constraintTop_toTopOf = "parent"
            app:layout_constraintStart_toStartOf = "parent"
            app:layout_constraintBottom_toBottomOf = "parent"/>

 </android.support.constraint.ConstraintLayout>

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

Using LinearLayout if you are using textview height and width match_parent You can set the gravity text to center and text alignment to center text horizontal if you are using textview height and width wrap_content then add gravity center attribute in your LinearLayout.

XML-код

<LinearLayout
android:layout_width = "match_parent"
android:layout_height = "match_parent"
android:orientation = "vertical">

<TextView
    android:layout_width = "match_parent"
    android:layout_height = "match_parent"
    android:textAlignment = "center"
    android:gravity = "center"
    android:textColor = "#000"
    android:textSize = "30sp"
    android:text = "Welcome to Android" />
    </LinearLayout>

Код Java

You can programatically do like this:-

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

Спасибо

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

<TextView  
    android:layout_width = "match_parent" 
    android:layout_height = "match_parent" 
    android:gravity = "center"/> 

Ширина и высота Textview должны быть match_parent и добавить android: gravity = "center" в атрибуты textview.

Если у вас есть только один TextView в вашем XML-файле, вы можете сделать родительский вид гравитации в качестве центра. Это сделает ваш дочерний элемент в центре экрана, а затем вы сможете сделать свой дочерний элемент оберткой как по высоте, так и по ширине.

Используйте android:textAlignment = "center"

       <TextView
        android:text = "HOW WAS\nYOUR\nDAY?"
        android:layout_width = "wrap_content"
        android:layout_height = "wrap_content"
        android:textAlignment = "center"
        android:id = "@+id/textView5"
         />

textAlignment = "center" не будет работать, пока TextView не будет иметь размеры для match_parent

SAurabh 18.06.2019 09:55

Пример @SAurabh выше работает без проблем.

Chathura Wijesinghe 19.06.2019 05:22

работает ли он без гравитации по отношению к родительскому элементу или гравитация макета сама по себе? Выравнивание текста не будет выравнивать текст в пределах его границ просмотра, поэтому, пока textView не примет match_parent, в этом случае он не будет казаться таким без гравитации в его родительском макете или layout_gravity сам по себе

SAurabh 20.09.2019 10:30

На самом деле, мы можем добиться большего, исключив fontPadding.

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

Для Котлин:

Если вы хотите центрировать TextView с помощью кода:

textView.gravity = Gravity.CENTER

Если вы хотите центр horizontally:

textView.gravity = Gravity.CENTER_HORIZONTAL

Или, центр vertically:

textView.gravity = Gravity.CENTER_VERTICAL

Почетное упоминание за запоздалый графический интерфейс

Я хотел добавить немного ценности этой и без того фантастической теме. И, наконец, по прошествии 11 лет у нас теперь есть способ перетащить TextView из панели инструментов и выбрать гравитацию в окне свойств графического интерфейса. И, к счастью, графический интерфейс сочетает свойства лаконично, как «center_vertical | center_horizontal».

    <TextView
    android:text = "This is my sample text."
    android:layout_width = "match_parent"
    android:layout_height = "35.7dp"
    android:id = "@+id/textView2"
    android:layout_marginBottom = "24.7dp"
    android:typeface = "sans"
    android:textSize = "20"
    android:gravity = "center_vertical|center_horizontal" />

Другие вопросы по теме