Как центрировать текст по горизонтали и вертикали в TextView?
Как мне центрировать текст по горизонтали и вертикали в TextView , чтобы он отображался точно посередине TextView в Android ?
pupeno 11 Янв 2009 в 03:27
Установите для layout_width и layout_height значение fill_parent, затем установите для гравитации значение center. Это поможет
25 Июн 2015 в 12:39
Fill_parent теперь не рекомендуется, поэтому используйте MATCH_PARENT в layout_width и layout_height и установите гравитацию TextView в центр.
Bilal Ahmad
30 Июн 2018 в 12:58
31 ответ
Лучший ответ
Я предполагаю, что вы используете макет XML.
Вы также можете использовать гравитацию center_vertical или center_horizontal в соответствии с вашими потребностями.
Как прокомментировал @stealthcopter, в java: .setGravity(Gravity.CENTER); .
А для пользователей Kotlin: .gravity = Gravity.CENTER
Ryan M 10 Дек 2021 в 12:10
Это не работает при использовании с RelativeLayout, где высота и ширина макета установлены на wrap_content.
17 Авг 2011 в 23:00
@Rob, если ширина и высота равны wrap_content, то технически текст уже центрирован.
17 Ноя 2011 в 08:06
Если я хочу выровнять TextView относительно другого представления, но текст центрирован сам по себе?
user517491
11 Мар 2012 в 01:43
У меня это не работает ( android:gravity=»center» ). Он по-прежнему отображается в крайнем левом углу экрана. 🙁
uSeRnAmEhAhAhAhAhA
20 Сен 2013 в 12:00
Не путать с android:layout_gravity=»center» , который делает что-то еще.
Rudi Kershaw
22 Дек 2014 в 17:28
Мы можем добиться этого несколькими способами:
textView.setGravity(Gravity.CENTER_VERTICAL | Gravity.CENTER_HORIZONTAL);
textview.setGravity(Gravity.CENTER);
textView.setTextAlignment(View.TEXT_ALIGNMENT_CENTER);
Sachin 14 Июн 2018 в 13:32
Вы можете просто установить gravity вашего текстового представления в CENTER .
Piyush 27 Сен 2016 в 16:02
android:gravity="center"
darryn.ten 22 Мар 2015 в 17:27
Чтобы это работало, текстовое представление должно быть match_parent или fill_parent. Если его содержимое обернуть, то оно не будет центрировано.
Kalel Wade
18 Авг 2014 в 19:59
@KalelWade: центрирование текста в текстовом представлении с помощью wrap_content вообще не имеет смысла. Возможно, вы думаете о центрировании текстового представления в родительском представлении, и в этом случае вы просто помещаете эту строку в родительский.
Mooing Duck
26 Фев 2016 в 23:42
Дак Таким образом, причина не использовать перенос содержимого — это не имеет смысла. Но когда вы либо справляетесь и вставляете, либо просто торопитесь, вы не можете сложить два и два вместе. Вот почему я упомянул об этом.
Kalel Wade
27 Фев 2016 в 01:04
Если TextView с шириной и высотой, равной «wrap_content», находится внутри LinearLayout с шириной и высотой «match_parent», тогда вам необходимо установить layout_gravity Linear_layout.
Faisal Naseer
1 Фев 2017 в 19:08
@MooingDuck, когда высота равна «wrap_content», а гравитация — «center_vertical», в дизайне (предварительный просмотр) он рисуется по центру, но на устройстве он располагается вверху. Так что сделайте высоту match_parent и установите гравитацию на center_vertical или center.
28 Фев 2018 в 11:45
Вы также можете настроить его динамически, используя:
textView.setGravity(Gravity.CENTER_VERTICAL | Gravity.CENTER_HORIZONTAL);
zeevb 21 Ноя 2009 в 15:25
Или просто textview.setGravity (Gravity.CENTER);
7 Апр 2011 в 20:00
Каковы критерии суждения, чтобы решить, какой способ выбрать, писать в xml или писать в файл Java?
20 Авг 2015 в 11:49
Если вы хотите, чтобы его можно было легко редактировать и значение не изменилось во время выполнения: XML. Если вы должны изменить значение в реальном времени (например, изменить выравнивание, когда пользователь нажимает кнопку), вы можете сделать это только через Java.
Gustavo Maciel
6 Ноя 2015 в 03:38
Итак, в основном xml, если его не нужно динамически изменять . Теперь я понял. Спасибо за простой и полезный ответ!
6 Ноя 2015 в 03:46
android:layout_centerInParent="true"
Это работает при использовании с RelativeLayout, где высота и ширина макета установлены на wrap_content.
sth 11 Ноя 2011 в 07:33
Это центрирует TextView, а не текст в нем.
anthropomo
12 Янв 2013 в 08:08
Это НЕ работает, если в TextView есть перенос слов. Текст будет полноширинным, многострочным и выровненным по левому краю в пределах TextView . На дисплее он будет выровнен по левому краю. Вы должны использовать «гравитацию», как указано в других ответах.
David Manpearl
13 Апр 2013 в 07:04
Вы также можете использовать комбинацию:
android:gravity="left|center"
Затем, если ширина textview больше, чем «fill_parent», текст все равно будет выровнен по левому краю (не по центру, как с гравитацией, установленной только в «center»).
Zapnologica 26 Июл 2013 в 12:36
TextView txtView = (TextView) findViewById(R.id.txtView); txtView.setGravity(Gravity.CENTER_HORIZONTAL);
txtView.setGravity(Gravity.CENTER_VERTICAL);
ayz4sci 17 Фев 2015 в 14:10
Это можно сделать двумя способами.
Первый в XML-коде. Обратите внимание на атрибут Gravity . Вы также можете найти этот атрибут в графическом редакторе; это может быть проще, чем РЕДАКТОР XML.
Для вашего конкретного сценария значения силы тяжести будут:
center_vertical|center_horizontal
В графическом редакторе вы найдете все возможные значения, даже увидите их результаты.
Piyush 27 Сен 2016 в 16:01
Если вы используете TableLayout, не забудьте также установить центр тяжести TableRows. Иначе не получится. По крайней мере, у меня это не сработало, пока я не установил центр тяжести TableRow.
Например, вот так:
Peter Mortensen 13 Май 2014 в 08:49
Интересно. Необходимо проверить, действительно ли это для LinearLayout (родительский элемент TableRow).
11 Авг 2014 в 21:28
Вам необходимо установить TextView Gravity (по центру по горизонтали и по центру по вертикали) следующим образом:
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
И динамически используя:
textview.setGravity(Gravity.CENTER); textView.setGravity(Gravity.CENTER_VERTICAL | Gravity.CENTER_HORIZONTAL);
Peter Mortensen 13 Май 2014 в 08:49
Семантика кода неправильная. Замените layout_centerhorizontal и layout_centervertical на layout_centerHorizontal и layout_centerVertical («H» и «V» в верхнем регистре, иначе это не сработает).
31 Июл 2012 в 20:15
Layout_ * сообщает родителю View, где он хочет быть. Без layout_ * сообщает View, как разместить его компоненты
Dandre Allison
8 Окт 2012 в 11:36
По моему мнению,
android:gravity="center"
android:layout_centerInParent="true"
android:layout_centerHorizontal="true" android:layout_centerVertical="true"
Хотя бы для форматирования текста.
anthropomo 12 Янв 2013 в 08:40
Для линейного макета: в XML используйте что-то вроде этого
Чтобы сделать это во время выполнения, используйте что-то вроде этого в своей деятельности
TextView textView1 =(TextView)findViewById(R.id.texView1); textView1.setGravity(Gravity.CENTER_VERTICAL | Gravity.CENTER_HORIZONTAL);
Для относительного макета: в XML используйте что-то вроде этого
Чтобы сделать это во время выполнения, используйте что-то вроде этого в своей деятельности
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);
valerybodak 19 Янв 2016 в 09:33
Используйте в файле XML.
Файл макета
Используйте это внутри класса Java
TextView textView =(TextView)findViewById(R.id.texviewid); textView.setGravity(Gravity.CENTER_VERTICAL | Gravity.CENTER_HORIZONTAL);
Peter Mortensen 13 Май 2014 в 08:57
Используйте это для относительного макета
android:layout_centerInParent="true"
И для другого макета
android:gravity="center"
user1087919user1087919 11 Окт 2013 в 15:08
Если высота и ширина TextView’s равны wrap content , тогда текст внутри TextView всегда будет по центру. Но если ширина TextView’s равна match_parent , а высота равна match_parent или wrap_content , вам необходимо написать следующий код:
Для RelativeLayout:
Для LinearLayout:
Naveen Kumar Sangwan 12 Янв 2019 в 18:31
Хотя использование гравитации работает для TextView, на уровне API 17 реализован альтернативный метод —
textView.setTextAlignment(View.TEXT_ALIGNMENT_CENTER);
Не знаю разницы, но тоже работает. Однако только для уровня API 17 или выше.
0xC0DED00D 25 Авг 2013 в 00:50
Разница описана здесь: stackoverflow .com / questions / 16196444 /…
10 Июл 2015 в 11:08
Это действительно центрирует текст в TextView. Если вы просто используете гравитацию, есть небольшое отступление в зависимости от текста . Например, если у вас есть маленький значок в виде кружка с текстом в центре, вы можете увидеть очень очевидную разницу.
27 Дек 2019 в 01:18
В RelativeLayout с ним будет хорошо.
И еще Button и все, что вы можете добавить.
Следующее работает для меня хорошо.
. other button or anything else.
Catalina 20 Апр 2015 в 18:43
Chathura Wijesinghe 5 Июн 2019 в 04:09
TextAlignment = «center» не будет выполнять эту работу, пока TextView не будет иметь размеры для match_parent
18 Июн 2019 в 09:55
Приведенный выше пример работает без проблем.
Chathura Wijesinghe
19 Июн 2019 в 05:22
Работает ли он без гравитации по отношению к родительскому объекту или гравитация макета сама по себе? Выравнивание текста не будет выравнивать текст в пределах его границ просмотра, поэтому, пока textView не примет match_parent, в этом случае он не будет казаться таким без гравитации в его родительском макете или layout_gravity сам по себе
20 Сен 2019 в 10:30
Самый простой способ (который, на удивление, упоминается только в комментариях, поэтому я публикую в качестве ответа):
textview.setGravity(Gravity.CENTER)
User1 15 Дек 2015 в 15:38
TextView Gravity работает в соответствии с вашим родительским макетом.
LinearLayout :
Если вы используете LinearLayout, вы найдете два атрибута гравитации android: gravity и android: layout_gravity.
Android: gravity: представляет макет внутреннего текста TextView, а android: layout_gravity: представляет позицию TextView в родительском представлении.

Если вы хотите установить текст по горизонтали и вертикали по центру, используйте следующий код
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 располагался по вертикали в центре родительского представления.
Alpesh Sorathiya 11 Янв 2019 в 16:53
Кстати, по какой причине вы откатились на предыдущую ревизию? Исправленная ревизия является хорошей практикой, так как то, что упомянул редактор, может помочь текстовым редакторам с кодировкой.
Bootstrap 4 — Выравнивание контента внутри «col»
Каким образом можно центрировать текст по высоте внутри col? Например, несколько col фиксированной высоты (300px), внутри которых некий текст, который нужно отцентрировать по высоте col. Спасибо!
Некоторый текст, который должен быть выровнен не центру колонки.
текст, выделенный жирным шрифтом Некоторый текст, который должен быть выровнен не центру колонки.
Некоторый текст, который должен быть выровнен не центру колонки.



