如何在Android上的TextView中横向和纵向放置文本?

如何在Android中的TextView中横向和纵向放置文本,使其看起来完全位于TextView的中间?

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

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

和@stealthcopter评论在java: .setGravity(Gravity.CENTER);

 android:gravity="center" 

这将做的伎俩

您也可以使用以下方式dynamic设置它:

 textView.setGravity(Gravity.CENTER_VERTICAL | Gravity.CENTER_HORIZONTAL); 
 android:layout_centerInParent="true" 

这适用于与布局的高度和宽度设置为wrap_content的RelativeLayout一起使用。

你也可以使用这个组合:

 android:gravity="left|center" 

然后,如果textview的宽度大于“fill_parent”,那么文本仍然会左alignment(不像重心那样只居中居中)。

应用重力:

 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的重力设置为居中。 否则,它将无法正常工作。 至less在我将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重力 (中心水平和中心垂直):

 android:layout_centerHorizontal="true" 

 android:layout_centerVertical="true" 

并dynamic使用:

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

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

XML代码中的第一个。 您需要注意Gravity属性。 你也可以在graphics编辑器中find这个属性。 它可能比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 

在graphics编辑器中,您可以find所有可能的值,甚至可以看到它们的结果。

我的想法是,

 android:gravity="center" 

胜过,

 android:layout_centerInParent="true" 

哪个比哪个好,

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

至less用于格式化文本。

对于线性布局:在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" 

在使用重力的情况下,对于TextView,在API级别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.setGravity(Gravity.CENTER) 

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

如果TextView's高度和宽度都是wrap content那么TextView的文本总是居中。 但是,如果TextView's宽度是match_parent ,高度是match_parentwrap_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> 

如果你试图在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> 

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

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

许多答案build议上面的工作正常。

 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> 

而亲程序运行的父母是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" /> 

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

 <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:gravity&android: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_horizo​​ntal”内部文本。

如果你想垂直居中,android:gravity =“center_vertical”内部文本。

android:layout_centerInParent =“true”如果你想TextView在父视图的中心位置。 android:layout_centerHorizo​​ntal =“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> 
 <TextView android:id="+@id/textView" android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="center" />