如何在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_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>
如果你试图在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_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>
<TextView android:id="+@id/textView" android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="center" />