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


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


1665


источник


Ответы:


Я предполагаю, что вы используете XML-макет.

<TextView  
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:gravity="center"
    android:text="@string/**yourtextstring**"
/>

и как @stealthcopter прокомментировал в java: .setGravity(Gravity.CENTER);


2606



android:gravity="center" 

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


393



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

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

264



android:layout_centerInParent="true"

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


97



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

android:gravity="left|center"

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


68



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

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



If you are using TableLayout make sure to set the gravity of the TableRows to center, too. Otherwise it will not work. At least it didn't work with me until I set the gravity of the TableRow to center.

For example, like this:

<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



You need to set TextView Gravity (Center Horizontal & Center Vertical) like this:

android:layout_centerHorizontal="true"   

and

android:layout_centerVertical="true"

And dynamically using:

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

33



There are two ways of doing this.

The first in the XML code. You need to pay attention at the Gravity Attribute. You also can find this attribute in the Graphic Editor; it may be easier than the XML EDITOR.

<TextView  
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:gravity="center_vertical|center_horizontal"
    android:text="Your Text"
/>

For your specific scenario, the values of gravity will be:

center_vertical|center_horizontal

In the graphical editor you will find all the possible values, even see their results.


32



In my opinion,

android:gravity="center"

is better than,

android:layout_centerInParent="true"

which is better than,

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

at least for formatting text.


29