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

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


person pupeno    schedule 11.01.2009    source источник
comment
установите для layout_width и layout_height значение fill_parent, затем установите для гравитации значение center. Это поможет   -  person Amila    schedule 25.06.2015
comment
fill_parent теперь не рекомендуется, поэтому используйте MATCH_PARENT в layout_width и layout_height и установите гравитацию TextView в центр.   -  person Bilal Ahmad    schedule 30.06.2018


Ответы (63)


Я предполагаю, что вы используете макет 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);

person Bill    schedule 11.01.2009
comment
Это не работает при использовании с RelativeLayout, где высота и ширина макета установлены на wrap_content. - person Rob; 17.08.2011
comment
@Rob, если ширина и высота равны wrap_content, то технически текст уже центрирован. - person JoJo; 17.11.2011
comment
Если я хочу выровнять TextView относительно другого представления, но текст центрирован сам по себе? - person ; 11.03.2012
comment
Если вы такой же минималист, как я, можете отбросить теги макета. - person Eugene van der Merwe; 24.07.2012
comment
У меня это не работает (android:gravity="center"). Он по-прежнему отображается в крайнем левом углу экрана. :( - person uSeRnAmEhAhAhAhAhA; 20.09.2013
comment
похоже, что ваши ширина и высота Textviews установлены на wrap_content. Если это так, вы можете установить layout_gravity в центр - person Daniel Jonker; 09.07.2014
comment
Не путать с android:layout_gravity="center", который делает что-то еще. - person Rudi Kershaw; 22.12.2014
comment
В относительной компоновке, если вы установите: android:layout_width="wrap_content" android:layout_height="wrap_content" и android:gravity="center", это работает для меня. - person bheatcoker; 19.03.2015
comment
гравитация = центр не работает. Высота текстового изображения = 34 dp и ширина = 100 dp. Пожалуйста, помогите - person user3207655; 03.11.2015
comment
Не забывайте, есть еще center_veritcal и center_horizontal. - person Jeel Shah; 13.08.2016
comment
@ Роб, относительный макет предоставляет android: layout_centerInParent = true - person Vasant; 26.08.2016
comment
вы также можете вручную установить высоту и ширину на определенное значение, чтобы реализовать гравитацию. - person Moses Aprico; 07.09.2016
comment
Мне нужно было убедиться, что высота была установлена ​​на match_parent, прежде чем я смогу заставить gravity="center" работать по вертикали в дополнение к работе по горизонтали. (потому что, если бы я оставил его как wrap-content, даже если бы контент находился в углу родительского элемента, он не «выглядел» так, как будто он был центрирован, хотя технически это было так, но высота была меньше, чем у родительского элемента) - person jungledev; 20.02.2017
comment
Ключ - android:layout_height="match_parent" и android:gravity="center". Если высота равна wrap_content, это не сработает. - person CoolMind; 28.02.2018
comment
Это центрирует TextView, вопрос в том, как центрировать текст внутри TextView, и я считаю, что ответ: - android:textAlignment="center" - person gareth; 14.11.2019

android:gravity="center" 

Это поможет

person Jean    schedule 08.02.2010
comment
Чтобы это работало, текстовое представление должно быть match_parent или fill_parent. Если его содержимое обернуть, то оно не будет центрировано. - person Kalel Wade; 18.08.2014
comment
@KalelWade: центрирование текста в текстовом представлении с помощью wrap_content вообще не имеет смысла. Возможно, вы думаете о центрировании текстового представления в родительском представлении, и в этом случае вы просто помещаете эту строку в родительский. - person Mooing Duck; 26.02.2016
comment
@Mooing Duck Таким образом, причина не использовать перенос содержимого - это не имеет смысла. Но когда вы либо справляетесь и вставляете, либо просто торопитесь, вы не можете сложить два и два вместе. Вот почему я упомянул об этом. - person Kalel Wade; 27.02.2016
comment
если TextView с равной шириной и высотой wrap_content находится внутри LinearLayout с шириной и высотой match_parent, вам необходимо установить layout_gravity для Linear_layout. - person Faisal Naseer; 01.02.2017
comment
@MooingDuck, когда высота равна wrap_content, а гравитация center_vertical, он рисует в дизайне (предварительный просмотр) по центру, но в устройстве он располагается вверху. Так что сделайте высоту match_parent и установите гравитацию в center_vertical или center. - person CoolMind; 28.02.2018

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

textView.setGravity(Gravity.CENTER_VERTICAL | Gravity.CENTER_HORIZONTAL);
person zeevb    schedule 21.11.2009
comment
Или просто textview.setGravity (Gravity.CENTER); - person Amplify91; 07.04.2011
comment
Каковы критерии суждения, чтобы решить, какой способ выбрать, писать в xml или писать в файл Java? - person kenju; 20.08.2015
comment
@Kenju, если вы хотите, чтобы его можно было легко редактировать и значение не менялось во время выполнения: XML. Если вы должны изменить значение в реальном времени (например, изменить выравнивание, когда пользователь нажимает кнопку), вы можете сделать это только через Java. - person Gustavo Maciel; 06.11.2015
comment
@GustavoMaciel, так что в основном xml, если его не нужно динамически изменять ... Теперь я понял. Спасибо за простой и полезный ответ! - person kenju; 06.11.2015

android:layout_centerInParent="true"

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

person itherese    schedule 11.11.2011
comment
Это центрирует TextView, а не текст в нем. - person anthropomo; 12.01.2013
comment
Это НЕ работает, если в TextView есть перенос слов. Текст будет полноширинным, многострочным и выровненным по левому краю в пределах TextView. На дисплее он будет выровнен по левому краю. Вы должны использовать гравитацию, как указано в других ответах. - person David Manpearl; 13.04.2013

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

android:gravity="left|center"

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

person Szorstki    schedule 01.01.2013

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

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"        
/>
person Gaganpreet Singh    schedule 30.05.2013

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

Первый в 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

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

person Cristiano Guerra    schedule 17.10.2014

Если вы используете 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>
person Maverick1st    schedule 13.05.2011
comment
Интересно. Необходимо проверить, действительно ли это для LinearLayout (родительский элемент TableRow). - person Martin; 11.08.2014

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

android:layout_centerHorizontal="true"   

а также

android:layout_centerVertical="true"

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

textview.setGravity(Gravity.CENTER);
textView.setGravity(Gravity.CENTER_VERTICAL | Gravity.CENTER_HORIZONTAL);
person NagarjunaReddy    schedule 15.05.2012
comment
Семантика кода неправильная. Замените layout_centerhorizontal и layout_centervertical на layout_centerHorizontal и layout_centerVertical (H и V на верхний регистр, иначе это не сработает). - person yugidroid; 31.07.2012
comment
layout_ * сообщает родителю View, где он хочет быть. Без layout_ * сообщает View, как разместить его компоненты - person Dandre Allison; 08.10.2012

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

android:gravity="center"

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

android:layout_centerInParent="true"

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

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

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

person epicness42    schedule 16.07.2012

Для линейного макета: в 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);
person Karthikeyan    schedule 03.01.2015

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

Файл макета

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

or:

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

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

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

android:layout_centerInParent="true"

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

android:gravity="center" 
person Community    schedule 11.10.2013

Если 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>
person Avijit Karmakar    schedule 17.12.2015

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

textView.setTextAlignment(View.TEXT_ALIGNMENT_CENTER);

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

person noob    schedule 24.08.2013
comment
Разница описана здесь: stackoverflow .com / questions / 16196444 /. - person jasdefer; 10.07.2015
comment
Это действительно центрирует текст в TextView. Если вы просто используете гравитацию, есть небольшое отступление в зависимости от текста ... Например, если у вас есть маленький значок в виде кружка с текстом в центре, вы можете увидеть очень очевидную разницу. - person tarrball; 27.12.2019

В 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>
person Yuda Prawira    schedule 21.11.2012

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

textview.setGravity(Gravity.CENTER)
person user1    schedule 15.12.2015

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

person note-knotz    schedule 02.04.2013

Если вы пытаетесь центрировать текст в 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>
person dyslexicanaboko    schedule 15.07.2012

Используйте 1_

       <TextView
        android:text="HOW WAS\nYOUR\nDAY?"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textAlignment="center"
        android:id="@+id/textView5"
         />
person Chathura Wijesinghe    schedule 05.06.2019
comment
textAlignment = center не будет выполнять эту работу, пока TextView не будет иметь размеры для match_parent - person SAurabh; 18.06.2019
comment
Пример @SAurabh выше работает без проблем. - person Chathura Wijesinghe; 19.06.2019
comment
работает ли он без гравитации по отношению к родительскому объекту или гравитация макета сама по себе? Выравнивание текста не будет выравнивать текст в пределах его границ просмотра, поэтому, пока textView не примет match_parent, в этом случае он не будет казаться таким без гравитации в его родительском макете или layout_gravity сам по себе - person SAurabh; 20.09.2019

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

<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" />
person Md. Naushad Alam    schedule 03.06.2013

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

  <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"/>
person Niranjan    schedule 15.11.2015

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

android:gravity="center"

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

android:gravity="center_vertical"

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

android:gravity="center_horizontal"
person rgamber    schedule 04.07.2013

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

<TextView
  android layout_height="wrap_content"
  android layout_height="wrap_content"
  android:includeFontPadding="false"
  android:textAlignment="center"
/>
person Seanghay    schedule 13.02.2020

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

<TextView
    android:gravity="center" />
person Mansoor Ahmad Samar    schedule 06.05.2013

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

<TextView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:gravity="center" />
person Kamlakar Kate    schedule 30.06.2017

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

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

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);
person ArghadipDasCEO    schedule 10.02.2018

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

LinearLayout:

Если вы используете LinearLayout, вы найдете два атрибута гравитации android: gravity и android: 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>
person Alpesh Sorathiya    schedule 20.09.2017
comment
Кстати, по какой причине вы откатились на предыдущую ревизию? Исправленная ревизия является хорошей практикой, так как то, что упомянул редактор, может помочь текстовым редакторам с кодировкой. - person Edric; 27.03.2019

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

<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>
person Cunity    schedule 17.06.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" />
person Anil    schedule 20.05.2016

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

центральный текст

<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, вам нужно установить их гравитацию в центр

person Muklas    schedule 04.09.2016
comment
Сработало ... Спасибо :) - person Tajuddin Khandaker; 01.06.2021

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

person Himmat Gill    schedule 17.08.2016

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

<TextView
android:id="+@id/txtVw"
android:gravity="center"
/>
person Ruben JG    schedule 13.03.2014

используйте приведенный ниже код в 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>
person koteswara D K    schedule 07.12.2016

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

person Praveen Gaur    schedule 22.03.2017

<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);
person Community    schedule 22.04.2018

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

<TextView  
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:gravity="center"/> 
person Rishabh Saxena    schedule 01.04.2019

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

android:layout_centerInParent= true
person Varun Jain    schedule 05.03.2017
comment
Истина должна быть в кавычках - person Mason; 19.04.2017

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

<TextView  
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:gravity="center"
/>
person Bapusaheb Shinde    schedule 20.09.2017

Я добавил фрагмент 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/>
person Sachin    schedule 03.12.2017

Скажем, полный текст на экране

 <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"
    />
person Community    schedule 05.02.2018

Через .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);
person hyperCoder    schedule 03.03.2018

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

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

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

(textView.setGravity(Gravity.CENTER_VERTICAL | Gravity.CENTER_HORIZONTAL);
person mohamad sheikhi    schedule 07.02.2019

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

Использование LinearLayout, если вы используете высоту и ширину textview match_parent. Вы можете установить текст гравитации по центру и выравнивание текста по центру текста по горизонтали, если вы используете высоту и ширину textview wrap_content, тогда добавьте атрибут центра тяжести в свой 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

Вы можете программно сделать вот так: -

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

Спасибо

person Android Geek    schedule 26.03.2019

Для котлина:

Если вы хотите центрировать свой TextView из кода:

textView.gravity = Gravity.CENTER

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

textView.gravity = Gravity.CENTER_HORIZONTAL

Или vertically центр:

textView.gravity = Gravity.CENTER_VERTICAL
person Jamil Hasnine Tamim    schedule 17.08.2020

Благодарность за запоздалый графический интерфейс

Я хотел добавить немного ценности этой и без того фантастической теме. И, наконец, по прошествии 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" />
person Sting    schedule 26.08.2020

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

android:gravity="center"
android:textAlignment="viewStart"
person FlorianB    schedule 17.08.2016

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

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

    <TextView
     android:text="@string/yourText"
     android layout_height="wrap_content"
     android layout_height="wrap_content"
     android:gravity="center" />
person Sarvesh Thiruppathi    schedule 13.11.2017

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

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

or

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

person Alejandro Bertinelli    schedule 27.11.2017

Как центрировать представление или его содержимое, например TextView или Button по горизонтали и вертикали? layout_gravity можно использовать для размещения представления в центре его родителя. В то время как атрибут гравитации используется для позиционирования содержимого представления, например «Текст» в центре обзора.

(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” доза не работает !!

Чтобы центрировать 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" это центрирует текст по горизонтали и вертикали.

введите здесь описание изображения

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

В 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" />
person itzhar    schedule 14.12.2017

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

android:gravity="center"
person Aravinth Velusamy    schedule 20.03.2018

используйте 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>
person TejpalBh    schedule 08.05.2018

Вот решение.

<TextView  
       android:layout_width="match_parent" 
       android:layout_height="match_parent" 
       android:gravity="center"
       android:text="**Your String Value**" />
person Jatin Mandanka    schedule 25.05.2018

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

android:gravity="center" or

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

android:gravity="center_horizontal"

android:gravity="center_vertical"

person hash    schedule 05.11.2018

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

person Joshua Best    schedule 14.12.2018

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

<TextView
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="center" />
person mohamad sheikhi    schedule 16.02.2019

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

person Rohit Patil    schedule 10.05.2019

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

person Jocelin    schedule 27.04.2019

android:gravity="centre" 

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

person Sarvesh Thiruppathi    schedule 29.12.2018