Текстовое представление должно быть match_parent или fill_parent, чтобы это работало. Если его обернуть содержимое, то он не будет в центре.
Калель Уэйд,
7
@KalelWade: центрирование текста в текстовом представлении с помощью wrap_content не имеет никакого смысла. Возможно, вы думаете о центрировании текстового представления в родительском представлении, и в этом случае вы просто помещаете эту строку в родительское представление.
Mooing Duck
@Mooing Duck Таким образом, причина не использовать перенос содержимого - это не имеет смысла. Но когда вы либо справляетесь и вставляете, либо просто торопитесь, вы не можете сложить два и два. Вот почему я упомянул это.
Калель Уэйд
1
если TextView с шириной и высотой, равной «wrap_content», находится внутри LinearLayout с шириной и высотой «match_parent», то вам нужно установить layout_gravity для Linear_layout.
Фейсал Насир
1
@MooingDuck, когда высота равна «wrap_content», а сила тяжести - «center_vertical», в Design (предварительный просмотр) он отображается по центру, но в устройстве он располагается сверху. Так что сделайте высоту «match_parent» и установите гравитацию «center_vertical» или «center».
CoolMind
298
Вы также можете настроить его динамически, используя:
Каковы критерии суждения, чтобы решить, какой путь выбрать, писать в xml или писать в файле Java?
кендзю
2
@ Кенджу, если вы хотите, чтобы он был легко редактируемым и значение не будет меняться во время выполнения: XML. Если вам нужно изменить значение в реальном времени (например, изменить выравнивание, когда пользователь нажимает кнопку), то вы можете сделать это только через Java.
Густаво Масиэль
2
@GustavoMaciel так, в основном xml, если это не нужно изменять динамически ... Теперь я получил это. Спасибо за ваш простой и полезный ответ!
кендзю
115
android:layout_centerInParent="true"
Это работает при использовании с RelativeLayout, где высота и ширина макета установлены на wrap_content.
Это НЕ работает, когда есть перенос слов в TextView. Текст будет полноразмерным, многострочным и выровненным по левому краю TextView. На дисплее оно будет выровнено по левому краю. Вы должны использовать «гравитацию», как указано в других ответах.
Дэвид Мэнпирл
83
Вы также можете использовать комбинацию:
android:gravity="left|center"
Затем, если ширина textview больше, чем "fill_parent", текст все равно будет выровнен по левому краю (не по центру, так как гравитация установлена только на "center").
Первый в коде XML. Вам нужно обратить внимание на GravityАтрибут. Вы также можете найти этот атрибут в графическом редакторе; это может быть проще, чем редактор XML.
Если вы используете TableLayout, не забудьте также установить центр тяжести TableRows. В противном случае это не будет работать. По крайней мере, это не работало со мной, пока я не установил гравитацию TableRow в центр.
Семантика кода неверна. Замените layout_centerhorizontalи layout_centerverticalна layout_centerHorizontalи layout_centerVertical(«H» и «V» в верхнем регистре, иначе это не будет работать).
Югидроид
2
layout_ * сообщает родителю вида, где он хочет быть. Без layout_ * рассказывает View, как разместить его компоненты
Для линейного макета: в XML используйте что-то вроде этого
<TextViewandroid: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"/>
Чтобы сделать это во время выполнения, используйте что-то подобное в своей деятельности
Для Относительного расположения: в XML используйте что-то вроде этого
<TextViewandroid:id="@+id/textView1"android:layout_width="fill_parent"android:layout_height="fill_parent"android:layout_centerInParent="true"android:text="Your Text goes here"/>
Чтобы сделать это во время выполнения, используйте что-то подобное в своей деятельности
Если TextView'sвысота и ширина - wrap contentто текст внутри TextViewвсегда будет в центре. Но если TextView'sширина равна, match_parentа высота равна match_parentили равна, wrap_contentвы должны написать следующий код:
Это действительно отцентрирует текст в TextView. Если вы просто используете гравитацию, есть небольшой отступ, в зависимости от того, что текст ... Например, если у вас есть маленький значок круга с текстом в центре, вы можете увидеть очень очевидную разницу.
tarrball
14
Во RelativeLayout, будет приятно с этим.
И еще, Buttonи все, что вы можете добавить.
Следующее работает хорошо для меня.
<RelativeLayoutxmlns: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"><TextViewandroid: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>
Если вы пытаетесь центрировать текст на TableRow в TableLayout, вот как я этого добился:
<TableRowandroid:id="@+id/rowName"android:layout_width="wrap_content"android:layout_height="wrap_content"android:padding="5dip"><TextViewandroid: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>
textAlignment = "center" не будет выполнять эту работу до тех пор, пока TextView не будет иметь размеры для match_parent
SAurabh
Приведенный выше пример @Surabh работает без проблем.
Chathura Wijesinghe
это работает без гравитации к родительской или макет гравитации сам по себе? Не будет выравнивания текста, чтобы выровнять текст в границах его вида, поэтому пока textView не получит match_parent, в этом случае это не будет выглядеть без гравитации в его родительском макете или layout_gravity
SAurabh
9
Вот мой ответ, который я использовал в своем приложении. Он показывает текст в центре экрана.
Высота и ширина TextView - это содержимое переноса, затем текст в пределах textview всегда центрируется, а затем делается по центру в его родительском макете с помощью:
TextView гравитация работает в соответствии с вашим родительским макетом.
LinearLayout :
Если вы используете LinearLayout, то вы найдете два гравитационных атрибута android: gravity & android: layout_gravity
android: gravity: представляет зелье макета внутреннего текста TextView, а android: layout_gravity: представляет позицию TextView в родительском представлении.
Если вы хотите установить текст горизонтально и вертикально по центру, используйте приведенный ниже код
Используя 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 располагался вертикально в центре родительского представления.
Кстати, по какой причине вы откатились на предыдущую ревизию? Вернутая вами ревизия является хорошей практикой, так как то, что упомянул редактор, может помочь текстовым редакторам в кодировании.
Ответы:
Я предполагаю, что вы используете макет XML.
Вы также можете использовать гравитацию
center_vertical
или вcenter_horizontal
соответствии с вашими потребностями.и как @stealthcopter прокомментировал в Java:
.setGravity(Gravity.CENTER);
источник
android:gravity="center"
). Это все еще показывает в крайнем левом углу экрана. :(android:layout_gravity="center"
, что делает что-то еще.Это сделает свое дело
источник
Вы также можете настроить его динамически, используя:
источник
Это работает при использовании с RelativeLayout, где высота и ширина макета установлены на wrap_content.
источник
TextView
. Текст будет полноразмерным, многострочным и выровненным по левому краюTextView
. На дисплее оно будет выровнено по левому краю. Вы должны использовать «гравитацию», как указано в других ответах.Вы также можете использовать комбинацию:
Затем, если ширина textview больше, чем "fill_parent", текст все равно будет выровнен по левому краю (не по центру, так как гравитация установлена только на "center").
источник
Применить гравитацию:
Для вертикальной:
В XML:
источник
Есть два способа сделать это.
Первый в коде XML. Вам нужно обратить внимание на
Gravity
Атрибут. Вы также можете найти этот атрибут в графическом редакторе; это может быть проще, чем редактор XML.Для вашего конкретного сценария значения гравитации будут:
В графическом редакторе вы найдете все возможные значения, даже увидите их результаты.
источник
Если вы используете TableLayout, не забудьте также установить центр тяжести TableRows. В противном случае это не будет работать. По крайней мере, это не работало со мной, пока я не установил гравитацию TableRow в центр.
Например, вот так:
источник
Вам нужно установить TextView Gravity (Center Horizontal и Center Vertical) следующим образом:
а также
И динамически используя:
источник
layout_centerhorizontal
иlayout_centervertical
наlayout_centerHorizontal
иlayout_centerVertical
(«H» и «V» в верхнем регистре, иначе это не будет работать).По моему мнению,
лучше, чем,
что лучше чем,
по крайней мере для форматирования текста.
источник
Для линейного макета: в XML используйте что-то вроде этого
Чтобы сделать это во время выполнения, используйте что-то подобное в своей деятельности
Для Относительного расположения: в XML используйте что-то вроде этого
Чтобы сделать это во время выполнения, используйте что-то подобное в своей деятельности
источник
Используйте в файле XML.
Файл макета
или:
Используйте это внутри класса Java
источник
Используйте это для относительного расположения
и для другого макета
источник
Если
TextView's
высота и ширина -wrap content
то текст внутриTextView
всегда будет в центре. Но еслиTextView's
ширина равна,match_parent
а высота равнаmatch_parent
или равна,wrap_content
вы должны написать следующий код:Для RelativeLayout:
Для LinearLayout:
источник
Хотя использование гравитации работает для TextView, есть альтернативный метод, реализованный на уровне API 17 -
Не знаю разницы, но это тоже работает. Однако только для уровня API 17 или выше.
источник
Во
RelativeLayout
, будет приятно с этим.И еще,
Button
и все, что вы можете добавить.Следующее работает хорошо для меня.
источник
Самый простой способ (который удивительно упоминается только в комментариях, поэтому я и публикую в качестве ответа) это:
источник
Вы можете просто установить
gravity
свой текстовое представление вCENTER
.источник
Если вы пытаетесь центрировать текст на TableRow в TableLayout, вот как я этого добился:
источник
использование
android:textAlignment="center"
источник
Вот мой ответ, который я использовал в своем приложении. Он показывает текст в центре экрана.
источник
Если вы используете Относительный макет:
Если вы используете LinearLayout
источник
Как и многие ответы предлагают выше работает нормально.
Если вы хотите отцентрировать его по вертикали:
или только горизонтально:
источник
Просто в своем XML-файле установите гравитацию textview по центру:
источник
Вы можете сделать это, чтобы центрировать текст
источник
Высота и ширина TextView - это содержимое переноса, затем текст в пределах textview всегда центрируется, а затем делается по центру в его родительском макете с помощью:
Для LinearLayout также код такой же:
и программно родительским является Java-код RelativeLayout, это во время выполнения использовать что-то подобное в вашей деятельности
источник
Мы можем достичь этого несколькими способами:
источник
TextView гравитация работает в соответствии с вашим родительским макетом.
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_centerHor horizontal = "true", если вы хотите, чтобы TextView находился в горизонтальном центре родительского представления. android: layout_centerVertical = "true", если вы хотите, чтобы TextView располагался вертикально в центре родительского представления.
источник
Попробуй так, будет работать
источник
На самом деле, мы можем добиться большего успеха, исключив fontPadding.
источник