如何在TextView中水平和垂直居中文本?

如何在TextView中水平和垂直居中文本,以便它恰好出现在AndroidTextView的中间?

1455961 次浏览

我假设您正在使用XML布局。

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

您也可以根据需要使用重力center_verticalcenter_horizontal

正如@stealthcopter在java中评论的那样:.setGravity(Gravity.CENTER);

对于静态编程语言用户,.gravity = Gravity.CENTER

您还可以使用以下命令动态设置它:

textView.setGravity(Gravity.CENTER_VERTICAL | Gravity.CENTER_HORIZONTAL);
android:gravity="center"

这个就行了

如果您使用的是TableLayout,请确保将TableRow的重力也设置为居中。否则它不会工作。至少在我将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>
android:layout_centerInParent="true"

这在与RelativeLayout一起使用时有效,其中布局的高度和宽度设置为wrap_content。

您需要设置文本视图重力(中心水平和中心垂直),如下所示:

android:layout_centerHorizontal="true"

android:layout_centerVertical="true"

动态使用:

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

如果您尝试在TableLayout中的TableRow上居中文本,我是这样实现的:

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

在我看来,

android:gravity="center"

比,

android:layout_centerInParent="true"

这比,

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

至少对于文本格式。

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

您也可以使用组合:

android:gravity="left|center"

然后,如果文本视图宽度大于“fill_parent”,文本仍将向左对齐(不居中,因为重力仅设置为“居中”)。

您可以将文本视图的gravity设置为CENTER

简单地说,在您的XML文件中,将文本视图的重心设置为中心:

<TextViewandroid:gravity="center" />

应用重力:

TextView txtView = (TextView) findViewById(R.id.txtView);txtView.setGravity(Gravity.CENTER_HORIZONTAL);

对于垂直:

txtView.setGravity(Gravity.CENTER_VERTICAL);

在XML中:

<TextViewandroid:layout_width="fill_parent"android:layout_height="fill_parent"android:gravity="center"android:text="@string/Hello_World"/>

这是我在我的应用程序中使用的答案。它在屏幕中央显示文本。

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

正如上面的许多答案所建议的那样,效果很好。

android:gravity="center"

如果你想让它垂直居中:

android:gravity="center_vertical"

或者只是横向:

android:gravity="center_horizontal"

虽然使用重力适用于TextView,但在API级别17中实现了另一种方法-

textView.setTextAlignment(View.TEXT_ALIGNMENT_CENTER);

不知道有什么区别,但它也有效。但是仅适用于API级别17或更高。

在XML文件中使用。

布局文件

<TextViewandroid: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"
<TextViewandroid:id="+@id/textView"android:layout_width="match_parent"android:layout_height="wrap_content"android:gravity="center"/>

你试过这个方法吗?

<TextViewandroid:id="+@id/txtVw"android:gravity="center"/>

有两种方法可以做到这一点。

XML代码中的第一个。您需要注意Gravity属性。您还可以在图形编辑器中找到此属性;它可能比XML EDITOR更容易。

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

对于您的特定场景,重力值将是:

center_vertical|center_horizontal

在图形编辑器中,您将找到所有可能的值,甚至可以看到它们的结果。

对于线性布局:在XML中使用这样的东西

<TextViewandroid: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中使用这样的东西

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

如果您使用相对布局:

  <TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="@string/stringname"android:layout_centerInParent="true"/>

如果您使用的是LinearLayout

<TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="@string/stringname"android:layout_gravity="center"/>

最简单的方法(令人惊讶的是只在评论中提到,因此我将其作为答案发布)是:

textview.setGravity(Gravity.CENTER)

如果TextView's的高度和宽度是wrap content,那么TextView中的文本总是居中。但如果TextView's的宽度是match_parent,高度是match_parentwrap_content,那么你必须编写以下代码:

对于相对布局:

<?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">
<TextViewandroid:layout_width="match_parent"android:layout_height="wrap_content"android:gravity="center"android:text="Hello World" />
</RelativeLayout>

对于线性布局:

<?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">
<TextViewandroid:layout_width="match_parent"android:layout_height="wrap_content"android:gravity="center"android:text="Hello World" />
</LinearLayout>

TextView的高度和宽度是换行内容,然后文本视图中的文本始终居中,然后使用以下方法在其父布局中居中:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent">
<TextViewandroid: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">
<TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="Hello.."/></LinearLayout>

语法上的父级是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);

android:gravity="center_horizontal"用于水平对齐文本中心。android:gravity="center_vertical"用于垂直对齐文本中心。android:gravity="center"用于垂直和水平对齐文本中心。

<TextViewandroid:layout_width="match_parent"android:gravity="center_horizontal|center_vertical"android:layout_height="match_parent" />

试试这个方法它会起作用的

<LinearLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"android:orientation="vertical"android:gravity="center">  
<TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:textAlignment="center"/>
</LinearLayout>
<TextViewandroid: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" />

对于那些想知道如何在其TextView元素中垂直居中,同时将其保持在左侧(水平)的人:

android:gravity="center"android:textAlignment="viewStart"

将布局文件中的重力属性设置为android:gravity="center"

中心文本

<LinearLayoutandroid:layout_width="match_parent"android:orientation="vertical"android:gravity="center"android:layout_height="wrap_content"><TextViewandroid: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>

如果你有文本视图在linear布局中,你需要将它们都设置为重心

There are 2 ways to do this :
1. From Xmluse :<TextView.........android:gravity="center"/>
2. From Java classuse :
[textview].setGravity(Gravity.CENTER);

在xml中使用下面的代码,它对我有用,您可以更改它将在中心的方向

<LinearLayoutandroid:layout_width="match_parent"android:orientation="horizontal"android:background="@color/colorPrimaryDark"android:gravity="center"android:layout_height="wrap_content"><TextViewandroid: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,就像这样

<RelativeLayoutandroid:layout_width="width"android:layout_height="height"><TextViewandroid:id="@+id/yourid"android:layout_centerInParent="true"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="Your text" /></RelativeLayout>

如果您正在使用RelativeLayout,请尝试在TextView标记中使用此属性:

android:layout_centerInParent= true

使用android:gravity="center"解决您的问题。

您可以这样做以获得文本居中

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

试试这个:

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

TextView重力按照你的父布局工作。

线性布局

如果你使用LinearLayout,你会发现两个重力属性android:重力&android:layout_gravity

android:重力:表示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">
<TextViewandroid:layout_width="match_parent"android:text="Hello World!"android:gravity="center_horizontal"android:layout_gravity="center_vertical"android:layout_height="wrap_content"/></LinearLayout>

相对布局

使用RelativeLayout,您可以在TextView中使用以下属性

Android:重力=“中心”在TextView中的文本中心。

Android:重力="center_horizontal"内部文本,如果你想水平居中。

Android:重力="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">
<TextViewandroid:layout_width="match_parent"android:text="Hello World!"android:gravity="center"android:layout_centerInParent="true"android:layout_height="wrap_content"/></RelativeLayout>

您可以使用android居中文本视图:重力=“中心”

代码如下

    <TextViewandroid:text="@string/yourText"android layout_height="wrap_content"android layout_height="wrap_content"android:gravity="center" />

如果TextView没有将高度/宽度属性设置为wrap_content,请使用android:gravity="center"。但是有些人抱怨使用它不起作用。那是因为他们的布局没有相同的重力。您可以设置

android:layout_gravity="center"在电视(这将仅适用于TextView)

android:gravity="center"在父母的布局中(这将适用于其中的所有视图)

我添加了xml代码段,使文本视图中心与线性和相对布局相关联。

在线性布局

<TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="Text In Center"android:layout_gravity="center"android:gravity="center"/>

相对布局

<TextViewandroid:layout_width="match_parent"android:layout_height="match_parent"android:text="Text In Center"android:layout_centerInParent= true/>

在任何视图的ConstraintLayout中:

(当您使用约束布局时,将高度和宽度设置为0,并让约束管理视图边界。)

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

如何将视图或其内容居中,例如TextView或Button水平和垂直?layout_gravity可用于定位视图位于其父视图的中心。而重力属性用于将视图的内容(例如“文本”)放置在视图的中心。

(1)中心文本视图水平

在此处输入图片描述

<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" >
<TextViewandroid: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)垂直居中文本视图

Android:layout_gravity="center_vertical"剂量不工作!!

要将TextView垂直居中,您需要做一个技巧。将TextView放在RelativeLayout中,然后设置TextView属性android:layout_centerInParent="true"输入图片描述

<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" >
<TextViewandroid: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:重力="center_horizontal"

在此处输入图片描述

(4)水平和垂直居中文本

android:重力="中心"这将水平居中文本和垂直

在此处输入图片描述

<TextViewandroid:layout_width="fill_parent"android:layout_height="100dp"android:text="Hello World!"android:gravity="center"android:background="#333"android:textColor="#fff"/>

让我们在屏幕上说完整的文本视图

 <TextViewandroid:layout_width="match_parent"android:layout_height="match_parent"android:text="Hello World!"android:gravity="center"/>

假设相对布局中的文本视图(不完整)

<TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="Hello World!"android:layout_centerInParent=true/>

假设Textview(未满)在Linear_layout

<TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="Hello World!"android:layout_gravity="centre"/>

我们可以通过以下多种方式实现这一目标:

xml方法01

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

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

<TextViewandroid:id="@+id/textView"android:layout_height="match_parent"android:layout_width="wrap_content"android:gravity="center"android:text="@strings/text"/>

xml方法04

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

通过。xml文件重力可以设置为中心,如下所示

<TextViewandroid:layout_width="match_parent"android:layout_height="match_parent"android:gravity="center"android:text="In the center"/>

通过java以下是您可以解决特定问题的方法

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

在文本视图中使用重力属性将文本垂直和水平居中。

android:gravity="center"
<TextViewandroid:layout_width="match_parent"android:layout_height="match_parent"android:gravity="center"android:text="In the center"/>

以上是使用. xml文件进行设置。

但我更喜欢java版本,因为如果需要,您也可以在运行条件下在代码中禁用它。以下是java代码。

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

使用android:重力="中心"到父

<LinearLayoutandroid:layout_width="200dp"android:layout_height="200dp"
android:gravity="center"><TextViewandroid:layout_width="match_parent"android:layout_height="wrap_content"android:gravity="center"android:text="Hello world"/></LinearLayout>

这里是解决方案。

<TextViewandroid:layout_width="match_parent"android:layout_height="match_parent"android:gravity="center"android:text="**Your String Value**" />

您可以将重力设置为中心垂直和文本中心。

<TextViewandroid:text="@string/yourText"android layout_height="wrap_content"android layout_height="wrap_content"android:gravity="center_vertical"android:textAlignment="center" />

您可以为此更改android:gravity

android:gravity="center"

如果你想水平或垂直居中

android:gravity="center_horizontal"

android:gravity="center_vertical"

您可以在Java中以编程方式执行此操作:textview.set重力(Gravity.CENTER);

android:gravity="center"

xml中的这一行将帮助您将TextView居中。

你必须像这样设置重力:

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

试试这个:

<TextViewandroid:layout_width="match_parent"android:layout_height="match_parent"android:gravity="center" />
 <android.support.constraint.ConstraintLayoutxmlns: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">

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

试试这个:

使用LinearLayout如果您使用的是文本视图高度和宽度match_parent您可以将重力文本设置为居中,如果您使用的是文本视图高度和宽度,则设置为文本对齐到中心文本水平wrap_content然后在LinearLayout中添加重力中心属性。

xml代码

<LinearLayoutandroid:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical">
<TextViewandroid: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代码

你可以像这样编程:-

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

谢谢你

如果您正在制作文本视图的宽度和高度来包装内容,那么您必须根据父级支持的属性通过布局重力来管理它的位置。

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

文本视图的宽度和高度应该match_parent,并在文本视图属性中添加android:重力="中心"。

如果您的XML文件中只有一个TextView,那么您可以让父视图以重力为中心。这将使您的子元素在屏幕的中心,然后您可以使您的子视图作为高度和宽度的包装。

使用android:textAlignment="center"

       <TextViewandroid:text="HOW WAS\nYOUR\nDAY?"android:layout_width="wrap_content"android:layout_height="wrap_content"android:textAlignment="center"android:id="@+id/textView5"/>

实际上,我们可以通过排除fontPadd做得更好。

<TextViewandroid layout_height="wrap_content"android layout_height="wrap_content"android:includeFontPadding="false"android:textAlignment="center"/>

对于kotlin

如果你想从代码中居中TextView

textView.gravity = Gravity.CENTER

如果你想horizontally中心:

textView.gravity = Gravity.CENTER_HORIZONTAL

或者,vertically中心:

textView.gravity = Gravity.CENTER_VERTICAL

迟来的GUI荣誉奖

我想为这个已经很棒的线程添加一些价值。终于在11年后,我们现在有了一种从工具箱中拖放TextView并通过GUI属性框选择重力的方法。幸运的是,GUI将属性简明扼要地组合为“center_vertical|center_horizontal”。

输入图片描述

    <TextViewandroid:text="This is my sample text."android:layout_width="match_parent"android:layout_height="35.7dp"android:id="@+id/textView2"android:layout_marginBottom="24.7dp"android:typeface="sans"android:textSize="20"android:gravity="center_vertical|center_horizontal" />
android:textAlignment="center"

这个就行了

重新排列布局,图像或文本视图的位置属于对齐主题。所以如果你想把你的图像src垂直放在中间,你应该使用下面编写的代码

android:layout_centerVertical="true"

和中心水平

android:layout_centerHorizontal="true"

或者,我认为我们也可以使用重力将每个元素放在父布局的中间,例如android:gravity="center"

对于文本的布局,最好使用

android:文本对齐="中心"

对于对象等的其他布局,它很好用

android:重力="中心"

在中心显示文本,如:

------------------>text<-------------------

使用这些样式:

<TextViewandroid:layout_width="match_parent"android:layout_height="wrap_contect"android:gravity="center"android:text="@string/text"/>
android:gravity="center"

只需将其添加到您的xml中。

android:gravity="center"

字体填充也会影响文本的位置,您可以通过添加包容性填充=false来删除它

<TextViewandroid:includeFontPadding="false"android:layout_width="match_parent"android:layout_height="match_parent"android:gravity="center" />