How do I center text horizontally and vertically in a TextView?
如何在
我假设你正在使用XML布局。
1 2 3 4 5 6 | <TextView android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="center" android:text="@string/**yourtextstring**" /> |
您也可以根据需要使用gravity
并且正如@stealthcopter评论的那样
在java中:
1 | android:gravity="center" |
这样就可以了
您还可以使用以下命令动态设置它:
1 | textView.setGravity(Gravity.CENTER_VERTICAL | Gravity.CENTER_HORIZONTAL); |
1 | android:layout_centerInParent="true" |
当与RelativeLayout一起使用时,这适用于布局的高度和宽度。 width设置为wrap_content。
您也可以使用组合:
1 | android:gravity="left|center" |
然后,如果textview宽度大于"fill_parent",则文本仍将对齐到左侧(不是重心设置为"居中")。
应用重力:
1 2 | TextView txtView = (TextView) findViewById(R.id.txtView); txtView.setGravity(Gravity.CENTER_HORIZONTAL); |
对于垂直:
1 | txtView.setGravity(Gravity.CENTER_VERTICAL); |
在XML中:
1 2 3 4 5 6 | <TextView android:layout_width="fill_parent" android:layout_height="fill_parent" android:gravity="center" android:text="@string/Hello_World" /> |
如果您正在使用TableLayout,请确保将TableRows的重力设置为居中。
否则它将无法工作。在我将TableRow的重力设置为中心之前,至少它不适用于我。
例如,像这样:
1 2 3 | <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> |
有两种方法可以做到这一点。
XML代码中的第一个。您需要注意
1 2 3 4 5 6 | <TextView android:layout_width="fill_parent" android:layout_height="fill_parent" android:gravity="center_vertical|center_horizontal" android:text="Your Text" /> |
对于您的特定场景,重力值将是:
1 | center_vertical|center_horizontal |
在图形编辑器中,您将找到所有可能的值,甚至可以查看其结果。
您需要设置TextView Gravity(中心水平和垂直中心),如下所示:
1 | android:layout_centerHorizontal="true" |
和
1 | android:layout_centerVertical="true" |
并动态使用:
1 2 | textview.setGravity(Gravity.CENTER); textView.setGravity(Gravity.CENTER_VERTICAL | Gravity.CENTER_HORIZONTAL); |
在我看来,
1 | android:gravity="center" |
比...更好
1 | android:layout_centerInParent="true" |
哪个好,
1 2 | android:layout_centerHorizontal="true" android:layout_centerVertical="true" |
至少用于格式化文本。
对于线性布局:
在XML中使用这样的东西
1 2 3 4 5 6 7 | <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" /> |
要在运行时执行此操作,请在您的活动中使用此类内容
1 2 | TextView textView1 =(TextView)findViewById(R.id.texView1); textView1.setGravity(Gravity.CENTER_VERTICAL | Gravity.CENTER_HORIZONTAL); |
对于相对布局:在XML中使用这样的东西
1 2 3 4 5 6 7 | <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" /> |
要在运行时执行此操作,请在您的活动中使用此类内容
1 2 3 4 | 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文件中使用。
布局文件
1 2 3 4 5 | <TextView android:layout_width="fill_parent" android:layout_height="fill_parent" android:gravity="center" android:text="@string/stringtext"/> |
要么:
在Java类中使用它
1 2 | TextView textView =(TextView)findViewById(R.id.texviewid); textView.setGravity(Gravity.CENTER_VERTICAL | Gravity.CENTER_HORIZONTAL); |
用于相对布局
1 | android:layout_centerInParent="true" |
以及其他布局
1 | android:gravity="center" |
使用重力适用于TextView时,在API级别17中实现了另一种方法 -
1 | textView.setTextAlignment(View.TEXT_ALIGNMENT_CENTER); |
不知道差异,但它也有效。但仅适用于API级别17或更高级别。
如果
对于RelativeLayout:
1 2 3 4 5 6 7 8 9 10 11 12 | <?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:
1 2 3 4 5 6 7 8 9 10 11 12 | <?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> |
在
另外还有
以下适用于我。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | <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> |
最简单的方法(令人惊讶的是,仅在评论中提到,因此我发布的答案)是:
1 | textview.setGravity(Gravity.CENTER) |
您只需将textview的
如果您尝试将文本放在TableLay中的TableRow中心,以下是我实现此目的的方法:
1 2 3 4 5 6 7 8 9 10 11 12 | <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> |
这是我在我的应用程序中使用的答案。它在屏幕中央显示文本。
1 2 3 4 5 6 7 8 | <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" /> |
如果您使用相对布局:
1 2 3 4 5 | <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/stringname" android:layout_centerInParent="true"/> |
如果您使用的是LinearLayout
1 2 3 4 5 | <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/stringname" android:layout_gravity="center"/> |
正如上面提到的许多答案都可以。
1 | android:gravity="center" |
如果你想垂直居中:
1 | android:gravity="center_vertical" |
或只是横向:
1 | android:gravity="center_horizontal" |
TextView的高度和宽度是包装内容,然后textview中的文本始终居中,然后使用以下内容在其父布局中设置中心:
1 2 3 4 5 6 7 8 9 10 | <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,代码也是一样的:
1 2 3 4 5 6 7 8 9 10 | <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-grammatically parent是RelativeLayout java代码,这在运行时在你的活动中使用这样的东西
1 2 3 4 | 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 method 01
1 2 3 4 5 6 7 | <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 method 02
1 2 3 4 5 6 7 8 | <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 method 03
1 2 3 4 5 6 7 | <TextView android:id="@+id/textView" android:layout_height="match_parent" android:layout_width="wrap_content" android:gravity="center" android:text="@strings/text" /> |
XML method 04
1 2 3 4 5 6 7 | <TextView android:id="@+id/textView" android:layout_height="match_parent" android:layout_width="wrap_content" android:layout_centerInParent="true" android:text="@strings/text" /> |
Java method 01
1 | textView.setGravity(Gravity.CENTER_VERTICAL | Gravity.CENTER_HORIZONTAL); |
Java method 02
1 | textview.setGravity(Gravity.CENTER); |
Java method 03
1 | textView.setTextAlignment(View.TEXT_ALIGNMENT_CENTER); |
您可以这样做以使文本居中
1 2 3 4 | <TextView android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="center" /> |
只需在XML文件中,将textview gravity设置为center:
1 2 | <TextView android:gravity="center" /> |
TextView重力根据您的父布局工作。
LinearLayout中:
如果您使用LinearLayout,那么您将找到两个重力属性
android:gravity&amp;机器人:layout_gravity
android:gravity:表示TextView内部文本的布局部分
android:layout_gravity:表示父视图中的TextView位置。
如果你想水平设置文字&amp;垂直居中然后使用下面的代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | <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_horizo??ntal"内部文本,如果你想水平居中。
android:gravity ="center_vertical"内部文本,如果你想垂直居中。
android:layout_centerInParent ="true"如果您希望TextView位于父视图的中心位置。
android:layout_centerHorizo??ntal ="true"如果希望TextView位于父视图的水平中心。
android:layout_centerVertical ="true"如果你希望TextView在父视图的垂直中心。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | <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> |
试试这种方式,它会起作用
1 2 3 4 5 6 7 8 9 10 11 12 | <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> |
1 2 3 4 | <TextView android:layout_width="match_parent" android:gravity="center_horizontal|center_vertical" android:layout_height="match_parent" /> |
我不认为,你真的需要这样做,只需在布局文件中定义你的TextView
1 2 3 4 5 6 7 8 9 10 | <RelativeLayout android:layout_width="width" android:layout_height="height"> <TextView android:id="@+id/yourid" android:layout_centerInParent="true" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Your text" /> </RelativeLayout> |
使用xml中的以下代码,它可以帮助我改变它在中心的方向
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | <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> |
1 2 3 4 5 | <TextView android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="center" android:text="In the center"/> |
以上是使用.xml文件设置它。
但我更喜欢java版本,因为如果需要,你也可以在运行状态下禁用代码。以下是java代码。
1 | textView1.setGravity(Gravity.CENTER_VERTICAL | Gravity.CENTER_HORIZONTAL); |
你试过这种方式吗?
1 2 3 4 | <TextView android:id="+@id/txtVw" android:gravity="center" /> |
1 2 3 4 5 6 | <TextView android:id="+@id/textView" android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="center" /> |
使用
1 2 3 4 5 6 7 8 9 | <TextView android:text="HOW WAS YOUR DAY?" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textAlignment="center" android:id="@+id/textView5" /> |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | <android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" xmlns:app="http://schemas.android.com/apk/res-auto"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="HELLO" android:textColor="@color/colorPrimaryDark" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintTop_toTopOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintBottom_toBottomOf="parent"/> </android.support.constraint.ConstraintLayout> |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | <LinearLayout android:layout_width="match_parent" android:orientation="vertical" android:gravity="center" android:layout_height="wrap_content"> <TextView android:id="@+id/failresults" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_marginTop="3dp" android:gravity="center_vertical|center_horizontal" android:text="" android:textSize="12sp" /> </LinearLayout> |
如果你在linearlayout中有textview,你需要将它们设置为重心到中心
Via。
1 2 3 4 5 6 | <TextView android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="center" android:text="In the center" /> |
通过java以下是您解决特定问题的方法
1 | textView1.setGravity(Gravity.CENTER_VERTICAL | Gravity.CENTER_HORIZONTAL); |
将布局文件中的gravity属性设置为
如果您使用的是
1 | android:layout_centerInParent= true |
使用
试试这个 :
1 2 3 4 5 | <TextView android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="center" /> |
如果要创建文本视图宽度和高度以包装内容,则必须根据父支持的属性通过布局重力管理它的位置。否则你可以做到。
1 2 3 4 | <TextView android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="center"/> |
你必须像这样设置Gravity:
1 | (textView.setGravity(Gravity.CENTER_VERTICAL | Gravity.CENTER_HORIZONTAL); |
我们在屏幕上说Full Textview
1 2 3 4 5 6 | <TextView android:layout_width="match_parent" android:layout_height="match_parent" android:text="Hello World!" android:gravity="center" /> |
让我们说相对布局中的Textview(不完整)
1 2 3 4 5 6 | <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Hello World!" android:layout_centerInParent=true /> |
让我们说Linear_layout中的Textview(不完整)
1 2 3 4 5 6 | <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Hello World!" android:layout_gravity="centre" /> |
您可以将重力设置为居中垂直,将文本对齐设置为居中。
1 2 3 4 5 6 | <TextView android:text="@string/yourText" android layout_height="wrap_content" android layout_height="wrap_content" android:gravity="center_vertical" android:textAlignment="center" /> |
如果您的XML文件中只有一个TextView,那么您可以将父视图重力作为中心。
这将使您的子元素位于屏幕的中心,然后您可以将您的子视图作为高度和宽度的包装。
Textview的宽度和高度应该是match_parent,并在textview属性中添加android:gravity ="center"。
试试这个:
Using LinearLayout if you are using textview height and width match_parent You can set the gravity text to center and text alignment to center text horizontal if you are using textview height and width wrap_content then add gravity center attribute in your LinearLayout.
XML代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <TextView android:layout_width="match_parent" android:layout_height="match_parent" android:textAlignment="center" android:gravity="center" android:textColor="#000" android:textSize="30sp" android:text="Welcome to Android" /> </LinearLayout> |
Java代码
You can programatically do like this:-
1 | (textView.setGravity(Gravity.CENTER_VERTICAL | Gravity.CENTER_HORIZONTAL); |
谢谢
试试这个:
1 2 3 4 | <TextView android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="center" /> |
您可以使用以下命令以编程方式在java中执行此操作:textview.setGravity(Gravity.CENTER);
您可以为此更改
如果你想要水平或垂直居中
这是解决方案。
1 2 3 4 5 | <TextView android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="center" android:text="**Your String Value**" /> |
1 2 3 4 5 6 7 8 9 10 11 12 | There are 2 ways to do this : 1. From Xml use : <TextView ......... android:gravity="center"/> 2. From Java class use : [textview].setGravity(Gravity.CENTER); |
使用TextView中的"重力属性"将文本垂直和水平居中。
1 | android:gravity="center" |
1 2 3 4 5 6 7 8 | <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="25dp" android:textStyle="bold" android:textAppearance="?android:attr/textAppearanceMedium" android:text="Tours" android:id="@+id/textView" /> |
How to center a view or its content e.g. TextView or Button
horizontally and vertically? layout_gravity can be used to position a
view in the center of its parent. While gravity attribute is used to
position view’s content e.g."text" in the center of the view.
(1)水平居中TextView
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:layout_margin="10dp" tools:context=".MainActivity"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Hello World!" android:layout_gravity="center" android:background="#333" android:textColor="#fff" /> </LinearLayout> |
(2)垂直居中TextView
android:layout_gravity="center_vertical" dose not work!!
要垂直居中TextView,您需要制作一个技巧。将TextView放在RelativeLayout中,然后设置TextView属性android:layout_centerInParent ="true"
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:layout_margin="10dp" tools:context=".MainActivity"> <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="Hello World!" android:layout_centerInParent="true" android:layout_gravity="center_vertical" android:gravity="center" android:background="#333" android:textColor="#fff" /> </RelativeLayout> |
(3)水平居中文本
android:gravity="center_horizontal"
(4)中心文字水平&amp;垂直
android:gravity="center" this will center the text horizontally and
vertically
1
2
3
4
5
6
7
8 <TextView
android:layout_width="fill_parent"
android:layout_height="100dp"
android:text="Hello World!"
android:gravity="center"
android:background="#333"
android:textColor="#fff"
/>
在ConstraintLayout中的任何视图:
(当您使用约束布局时,将height&amp; width设置为0,并让约束来管理视图边界。)
1 2 3 4 5 6 7 | <View android:layout_width="0dp" android:layout_height="0dp" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintRight_toRightOf="parent" app:layout_constraintTop_toTopOf="parent" /> |
我添加了xml片段,以便在线性和相对布局中对齐textview中心。
在线性布局中
1 2 3 4 5 6 | <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Text In Center" android:layout_gravity="center" android:gravity="center"/> |
在相对布局中
1 2 3 4 5 | <TextView android:layout_width="match_parent" android:layout_height="match_parent" android:text="Text In Center" android:layout_centerInParent= true/> |
如果TextView没有将高度/宽度属性设置为
要么
您可以使用android:gravity ="center"将文本视图居中
代码如下
1 2 3 4 5 | <TextView android:text="@string/yourText" android layout_height="wrap_content" android layout_height="wrap_content" android:gravity="center" /> |
对于那些想知道如何在TextView元素中垂直居中而同时将其保持在左侧(水平)的人:
1 2 | android:gravity="center" android:textAlignment="viewStart" |
使用android:gravity ="center"到父级
1 2 3 4 5 6 7 8 9 10 11 12 13 | <LinearLayout android:layout_width="200dp" android:layout_height="200dp" android:gravity="center" > <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="center" android:text="Hello world" /> </LinearLayout> |
1 | android:gravity="centre" |
这有助于您将textview集中在一起。