Как TextView
текст по горизонтали и вертикали в TextView
, чтобы он отображался точно в середине TextView
в Android
?
Я предполагаю, что вы используете 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);
android:gravity="center"
Это сделает трюк
Вы также можете настроить его динамически, используя:
textView.setGravity(Gravity.CENTER_VERTICAL | Gravity.CENTER_HORIZONTAL);
android:layout_centerInParent="true"
Это работает при использовании с RelativeLayout, где высота и ширина макета установлены на wrap_content.
TextView
. Текст будет полнотекстовым, многострочным и выровненным по TextView
в TextView
. На дисплее оно будет выровнено по левому краю. Вы должны использовать «гравитацию», как указано в других ответах.
Вы также можете использовать комбинацию:
android:gravity="left|center"
Затем, если ширина текста больше, чем "fill_parent", текст по-прежнему будет выровнен влево (не с центром, как с гравитацией, установленной только до "центра" ).
Примените гравитацию:
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"
/>
Если вы используете 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>
Есть два способа сделать это.
Первый в коде XML. Вы должны обратить внимание на атрибут Gravity
. Вы также можете найти этот атрибут в графическом редакторе; это может быть проще, чем XML EDITOR.
<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
В графическом редакторе вы найдете все возможные значения, даже увидите их результаты.
Вам нужно установить TextView Gravity (Center Horizontal и Center Vertical) следующим образом:
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" в верхнем регистре, иначе это не будет работать).
По-моему,
android:gravity="center"
лучше, чем
android:layout_centerInParent="true"
что лучше, чем
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
по крайней мере для форматирования текста.
Для линейной компоновки: В 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);
Для Relative Layout: в 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);
Использовать в файле 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 существует альтернативный метод, реализованный в уровне API 17 -
textView.setTextAlignment(View.TEXT_ALIGNMENT_CENTER);
Не знаю разницы, но он тоже работает. Однако только для уровня API 17 или выше.
Если высота и ширина 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>
В 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>
Самый простой способ (что удивительно упоминается только в комментариях, следовательно, почему я отправляю в качестве ответа):
textview.setGravity(Gravity.CENTER)
Вы можете просто установить gravity
вашего текста в CENTER
.
Если вы используете Relative Layout:
<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
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" />
Если вы пытаетесь центрировать текст в 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:gravity="center_vertical"
или просто горизонтально:
android:gravity="center_horizontal"
Мы можем добиться этого несколькими способами:
Метод 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);
Вы можете сделать это, чтобы получить текст в центре
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center" />
Высота и ширина 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>
и prog grammatically parent - это 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);
Просто в вашем XML файле установите силу тяжести textview в центр:
<TextView
android:gravity="center" />
Тяжелость TextView работает в соответствии с вашим родительским макетом.
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>
Попробуйте этот способ, он будет работать
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:gravity="center_horizontal|center_vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAlignment="center" />
</LinearLayout>
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" />
Я не думаю, что вам действительно нужно это сделать, просто определите свой 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>
используйте приведенный ниже код в 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
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);
<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>
если у вас есть textview внутри linearlayout, вам нужно установить их как гравитацию в центр
Вы пробовали этот путь?
<TextView
android:id="+@id/txtVw"
android:gravity="center"
/>
<TextView
android:id="+@id/textView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
/>
Вы можете установить гравитацию в центр вертикальной и текстовой привязки в центр.
<TextView
android:text="@string/yourText"
android layout_height="wrap_content"
android layout_height="wrap_content"
android:gravity="center_vertical"
android:textAlignment="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);
Скажем, 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"
/>
попробуйте следующее:
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
/>
Используйте android:gravity="center"
для решения проблемы.
Если вы работаете с RelativeLayout
, попробуйте использовать это свойство внутри тэга TextView
:
android:layout_centerInParent= true
Вы должны установить гравитацию следующим образом:
(textView.setGravity(Gravity.CENTER_VERTICAL | Gravity.CENTER_HORIZONTAL);
android:gravity="centre"
Это поможет вам центрировать текстовое представление.
Вы можете программно сделать это в Java с: textview.setGravity(Gravity.CENTER);
Вы можете изменить android:gravity
для этого.
android:gravity="center"
или
если вы хотите центрировать по горизонтали или вертикали
android:gravity="center_horizontal"
android:gravity="center_vertical"
Вот решение.
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:text="**Your String Value**" />
использовать android: gravity = "center" to parent
<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>
Используйте свойство Gravity в TextView для центрирования текста по вертикали и по горизонтали.
android:gravity="center"
Как центрировать представление или его содержимое, например 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: гравитация = "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" />
В 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" />
Я добавил xml-фрагмент, чтобы сделать центр textview, выделенный как в Linear, так и в Relative Layout.
В линейной компоновке
<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/>
Если этот TextView не имеет атрибутов height/width, установленных на wrap_content
, просто используйте android:gravity="center"
. Но некоторые люди жалуются, что использование этого не работает. Это потому, что их макет не имеет такой же силы тяжести. Вы можете установить
android:layout_gravity="center"
В ТЕКСТИЛЬЕ (это применимо только к TextView)
или
android:gravity="center"
В ЛОГИСТИКЕ РОДИТЕЛЯ (это применимо ко всем представлениям внутри него)
Вы можете центрировать текстовый вид с помощью андроида: gravity = "center"
Код выглядит следующим образом
<TextView
android:text="@string/yourText"
android layout_height="wrap_content"
android layout_height="wrap_content"
android:gravity="center" />
There are 2 ways to do this :
1. From Xml
use :
<TextView
.........
android:gravity="center"/>
2. From Java class
use :
[textview].setGravity(Gravity.CENTER);
Установите атрибут тяжести в файле макета как
android:gravity="center"
И для тех, кто задается вопросом, как центрировать его по вертикали в элементе TextView, сохраняя его слева (по горизонтали):
android:gravity="center"
android:textAlignment="viewStart"
<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" />