Как центрировать текст по горизонтали и вертикали в TextView? - PullRequest
1848 голосов
/ 11 января 2009

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

Ответы [ 64 ]

27 голосов
/ 03 января 2015

Для линейного макета: В 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);
22 голосов
/ 04 октября 2013

Использовать в файле 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);
19 голосов
/ 11 октября 2013

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

android:layout_centerInParent="true"

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

android:gravity="center" 
15 голосов
/ 25 августа 2013

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

textView.setTextAlignment(View.TEXT_ALIGNMENT_CENTER);

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

14 голосов
/ 17 декабря 2015

Если высота и ширина 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>
12 голосов
/ 21 ноября 2012

В 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>
11 голосов
/ 15 декабря 2015

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

textview.setGravity(Gravity.CENTER)
11 голосов
/ 02 апреля 2013

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

9 голосов
/ 15 ноября 2015

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

  <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"/>
9 голосов
/ 15 июля 2012

Если вы пытаетесь центрировать текст на 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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...