Как разместить текст по горизонтали и вертикали в TextView?

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

1697
задан pupeno 11 янв. '09 в 3:27
источник поделиться
53 ответов
  • 1
  • 2

Я предполагаю, что вы используете 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);

2664
ответ дан Bill 11 янв. '09 в 4:53
источник поделиться
android:gravity="center" 

Это сделает трюк

399
ответ дан Jean 09 февр. '10 в 1:54
источник поделиться

Вы также можете настроить его динамически, используя:

textView.setGravity(Gravity.CENTER_VERTICAL | Gravity.CENTER_HORIZONTAL);
269
ответ дан zeevb 21 нояб. '09 в 15:25
источник поделиться
android:layout_centerInParent="true"

Это работает при использовании с RelativeLayout, где высота и ширина макета установлены на wrap_content.

98
ответ дан itherese 11 нояб. '11 в 3:58
источник поделиться

Вы также можете использовать комбинацию:

android:gravity="left|center"

Затем, если ширина текста больше, чем "fill_parent", текст по-прежнему будет выровнен влево (не с центром, как с гравитацией, установленной только до "центра" ).

68
ответ дан Szorstki 01 янв. '13 в 23:11
источник поделиться

Примените гравитацию:

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"        
/>
44
ответ дан Gaganpreet Singh 30 мая '13 в 8:34
источник поделиться

Если вы используете 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>
35
ответ дан Maverick1st 13 мая '11 в 14:57
источник поделиться

Вам нужно установить 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);
33
ответ дан NagarjunaReddy 15 мая '12 в 8:03
источник поделиться

Есть два способа сделать это.

Первый в коде 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

В графическом редакторе вы найдете все возможные значения, даже увидите их результаты.

32
ответ дан Cristiano Guerra 17 окт. '14 в 15:11
источник поделиться

По-моему,

android:gravity="center"

лучше, чем

android:layout_centerInParent="true"

что лучше, чем

android:layout_centerHorizontal="true"
android:layout_centerVertical="true"

по крайней мере для форматирования текста.

29
ответ дан epicness42 16 июля '12 в 7:28
источник поделиться

Для линейной компоновки: В 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);
26
ответ дан Karthikeyan 03 янв. '15 в 6:58
источник поделиться

Использовать в файле 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);
21
ответ дан venu 04 окт. '13 в 20:18
источник поделиться

Используйте это для относительной компоновки

android:layout_centerInParent="true"

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

android:gravity="center" 
18
ответ дан user1087919 11 окт. '13 в 14:08
источник поделиться

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

textView.setTextAlignment(View.TEXT_ALIGNMENT_CENTER);

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

14
ответ дан noob 24 авг. '13 в 23:50
источник поделиться

В 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
ответ дан Yuda Prawira 21 нояб. '12 в 6:15
источник поделиться

Если высота и ширина TextView's wrap content, то текст внутри TextView всегда будет центрирован. Но если ширина TextView's match_parent, а высота - match_parent или wrap_content, тогда вам нужно написать код ниже:

Для RelativeLayout:

<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:

<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>
11
ответ дан Avijit Karmakar 17 дек. '15 в 9:12
источник поделиться

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

textview.setGravity(Gravity.CENTER)
10
ответ дан user1 15 дек. '15 в 15:38
источник поделиться

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

10
ответ дан note-knotz 02 апр. '13 в 6:34
источник поделиться

Если вы используете 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"/>
9
ответ дан Niranjan 15 нояб. '15 в 9:33
источник поделиться

Если вы пытаетесь центрировать текст в 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>
9
ответ дан dyslexicanaboko 15 июля '12 в 5:14
источник поделиться

Вот мой ответ, который я использовал в своем приложении. Он показывает текст в центре экрана.

<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" />
9
ответ дан Md. Naushad Alam 03 июня '13 в 12:54
источник поделиться

Как многие ответы, предлагаемые выше, отлично работают.

android:gravity="center"

Если вы хотите центрировать его только вертикально:

android:gravity="center_vertical"

или просто горизонтально:

android:gravity="center_horizontal"
7
ответ дан rgamber 04 июля '13 в 23:09
источник поделиться

Высота и ширина 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);
6
ответ дан Attiff 07 марта '16 в 16:42
источник поделиться

Вы можете сделать это, чтобы получить текст в центре

<TextView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:gravity="center" />
6
ответ дан Kamlakar Kate 30 июня '17 в 12:27
источник поделиться

Просто в вашем XML файле установите силу тяжести textview в центр:

<TextView
    android:gravity="center" />
6
ответ дан Mansoor Ahmad Samar 06 мая '13 в 20:56
источник поделиться

Мы можем добиться этого несколькими способами:

Метод 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);
5
ответ дан ArghadipDasCEO 10 февр. '18 в 19:05
источник поделиться

Попробуйте этот способ, он будет работать

<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>
4
ответ дан Gabriel Eduardo Toledo 17 июня '16 в 21:29
источник поделиться

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" />
4
ответ дан Anil 20 мая '16 в 13:18
источник поделиться

Тяжелость 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>
3
ответ дан Alpesh Sorathiya 20 сент. '17 в 15:08
источник поделиться

используйте приведенный ниже код в 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>
3
ответ дан koteswara D K 07 дек. '16 в 13:26
источник поделиться
  • 1
  • 2

Другие вопросы по меткам