Как отцентрировать текст по горизонтали и вертикали в a TextView
, чтобы он отображался точно по центру TextView
in Android
?
Как отцентрировать текст по горизонтали и вертикали в a TextView
, чтобы он отображался точно по центру TextView
in 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"
). Это все еще показывает в крайнем левом углу экрана. :(
android:layout_gravity="center"
, что делает что-то еще.
android:gravity="center"
Это сделает свое дело
Вы также можете настроить его динамически, используя:
textView.setGravity(Gravity.CENTER_VERTICAL | Gravity.CENTER_HORIZONTAL);
android:layout_centerInParent="true"
Это работает при использовании с RelativeLayout, где высота и ширина макета установлены на wrap_content.
TextView
. Текст будет полноразмерным, многострочным и выровненным по левому краю TextView
. На дисплее оно будет выровнено по левому краю. Вы должны использовать «гравитацию», как указано в других ответах.
Применить гравитацию:
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"
/>
Есть два способа сделать это.
Первый в коде 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
В графическом редакторе вы найдете все возможные значения, даже увидите их результаты.
Если вы используете 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>
Вам нужно установить 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);
Для Относительного расположения: в 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'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, есть альтернативный метод, реализованный на уровне API 17 -
textView.setTextAlignment(View.TEXT_ALIGNMENT_CENTER);
Не знаю разницы, но это тоже работает. Однако только для уровня API 17 или выше.
Во 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>
Вы можете просто установить gravity
свой текстовое представление в CENTER
.
Если вы пытаетесь центрировать текст на 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: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"
/>
Вот мой ответ, который я использовал в своем приложении. Он показывает текст в центре экрана.
<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" />
Если вы используете Относительный макет:
<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"/>
Просто в своем XML-файле установите гравитацию textview по центру:
<TextView
android:gravity="center" />
Вы можете сделать это, чтобы центрировать текст
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center" />
Высота и ширина TextView - это содержимое переноса, затем текст в пределах 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);
Мы можем достичь этого несколькими способами:
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 гравитация работает в соответствии с вашим родительским макетом.
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_centerHor horizontal = "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>