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



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

893   30  

30 ответов:

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

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

android:gravity="left|center"

затем, если ширина textview больше ,чем" 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>

необходимо указать TextView Gravity (центр горизонтальный и Центр вертикальный), как это:

android:layout_centerHorizontal="true"   

и

android:layout_centerVertical="true"

и динамично, используя:

textview.setGravity(Gravity.CENTER);
textView.setGravity(Gravity.CENTER_VERTICAL | Gravity.CENTER_HORIZONTAL);

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

первый в XML-коде. Вы должны обратить внимание на . Вы также можете найти этот атрибут в графическом редакторе; это может быть проще, чем редактор 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

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

По-моему,

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" 

при использовании gravity works для TextView, есть альтернативный метод, реализованный в API level 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>

если 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>

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

textview.setGravity(Gravity.CENTER)

Вы можете просто установить gravity вашего textview в 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>

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

<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"/>

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

android:gravity="center"

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

android:gravity="center_vertical"

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

android:gravity="center_horizontal"

просто в вашем XML-файле установите гравитацию textview в центр:

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

и Pro-грамматически родитель является RelativeLayout java код это во время выполнения использовать что-то вроде этого в вашей деятельности

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);

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

<TextView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:gravity="center" />

мы можем достичь этого с помощью этих нескольких способов: -

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);

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" />

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

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

использовать ниже код в 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 работает в соответствии с вашим родительским макетом.

LinearLayout:

Если вы используете LinearLayout, то вы найдете два атрибута гравитации андроид:гравитация и Android:layout_gravity

android: гравитация: представление макета зелье внутреннего текста TextView в то время как android: layout_gravity: представление позиции TextView в Родительском представлении.

enter image description here

Если вы хотите установить текст по горизонтали & вертикально затем использовать ниже код

<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= "центр" для текстового центра в 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>

Comments

    Ничего не найдено.