如何在TextView
中水平和垂直居中放置文字,以使其恰好位于TextView
Android
的中间?
答案 0 :(得分:2851)
我假设你正在使用XML布局。
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:text="@string/**yourtextstring**"
/>
您还可以根据需要使用重力center_vertical
或center_horizontal
。
和@stealthcopter评论
在java中:.setGravity(Gravity.CENTER);
答案 1 :(得分:421)
android:gravity="center"
这样就可以了解
答案 2 :(得分:284)
您也可以使用以下方式动态设置:
textView.setGravity(Gravity.CENTER_VERTICAL | Gravity.CENTER_HORIZONTAL);
答案 3 :(得分:107)
android:layout_centerInParent="true"
当与RelativeLayout一起使用时,这适用于布局的高度和宽度。 width设置为wrap_content。
答案 4 :(得分:76)
您也可以使用组合:
android:gravity="left|center"
然后,如果textview宽度大于“fill_parent”,则文本仍将对齐到左侧(不是重心设置为“居中”)。
答案 5 :(得分:51)
应用重力:
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"
/>
答案 6 :(得分:38)
有两种方法可以做到这一点。
XML代码中的第一个。您需要注意Gravity
属性。您还可以在图形编辑器中找到此属性;它可能比XML EDITOR更容易。
<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
在图形编辑器中,您将找到所有可能的值,甚至可以查看其结果。
答案 7 :(得分:38)
如果您正在使用TableLayout,请确保将TableRows的重力设置为居中。 否则它将无法工作。在我将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>
答案 8 :(得分:36)
您需要设置 TextView Gravity (中心水平和垂直中心),如下所示:
android:layout_centerHorizontal="true"
和
android:layout_centerVertical="true"
动态使用:
textview.setGravity(Gravity.CENTER);
textView.setGravity(Gravity.CENTER_VERTICAL | Gravity.CENTER_HORIZONTAL);
答案 9 :(得分:30)
在我看来,
android:gravity="center"
优于
android:layout_centerInParent="true"
哪个好,
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
至少用于格式化文本。
答案 10 :(得分:27)
对于线性布局: 在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);
答案 11 :(得分:22)
在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);
答案 12 :(得分:19)
将此用于相对布局
android:layout_centerInParent="true"
和其他布局
android:gravity="center"
答案 13 :(得分:15)
虽然使用重力适用于TextView,但在API级别17中实现了另一种方法 -
textView.setTextAlignment(View.TEXT_ALIGNMENT_CENTER);
不知道差异,但它也有效。但仅适用于API级别17或更高级别。
答案 14 :(得分:14)
如果TextView's
身高和宽度为wrap content
,则TextView
中的文字始终居中。但如果TextView's
宽度为match_parent
且高度为match_parent
或wrap_content
,则必须编写以下代码:
RelativeLayout:
<?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:
<?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>
答案 15 :(得分:12)
在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>
答案 16 :(得分:11)
您只需将文字视图的gravity
设置为CENTER
。
答案 17 :(得分:11)
最简单的方式(令人惊讶的是,只在评论中提到,因此我发布的答案是:)
textview.setGravity(Gravity.CENTER)
答案 18 :(得分:9)
这是我在我的应用中使用的答案。它在屏幕中央显示文本。
<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" />
答案 19 :(得分:9)
如果您尝试将文本放在TableLay中的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>
答案 20 :(得分:9)
如果您使用的是相对布局:
<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"/>
答案 21 :(得分:8)
实际上,我们可以通过排除fontPadding来做得更好。
<TextView
android layout_height="wrap_content"
android layout_height="wrap_content"
android:includeFontPadding="false"
android:textAlignment="center"
/>
答案 22 :(得分:7)
正如上面提到的许多答案都可以。
android:gravity="center"
如果你想垂直居中:
android:gravity="center_vertical"
或仅横向:
android:gravity="center_horizontal"
答案 23 :(得分:6)
我们可以通过以下多种方式实现这一目标: -
XML方法01
<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方法02
<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方法03
<TextView
android:id="@+id/textView"
android:layout_height="match_parent"
android:layout_width="wrap_content"
android:gravity="center"
android:text="@strings/text"
/>
XML方法04
<TextView
android: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);
答案 24 :(得分:6)
只需在XML文件中,将textview gravity设置为center:
<TextView
android:gravity="center" />
答案 25 :(得分:6)
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>
和pro-grammatically parent是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);
答案 26 :(得分:6)
你可以这样做以文本为中心
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center" />
答案 27 :(得分:5)
TextView重力按照您的父布局工作。
<强>的LinearLayout 强>:
如果您使用LinearLayout,那么您将找到两个重力属性 android:gravity&amp;机器人:layout_gravity
android:gravity:表示TextView内部文本的布局部分 android:layout_gravity:表示父视图中的TextView位置。
如果你想水平设置文字&amp;垂直居中然后使用下面的代码
LineSeries
<强> 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在父视图的垂直中心。
<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>
答案 28 :(得分:4)
android:gravity="center_horizontal"
用于水平对齐文本中心。
android:gravity="center_vertical"
用于垂直对齐文本中心。
android:gravity="center"
用于垂直和水平对齐文本中心。
<TextView
android:layout_width="match_parent"
android:gravity="center_horizontal|center_vertical"
android:layout_height="match_parent" />
答案 29 :(得分:4)
尝试这种方式,它会起作用
<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>
答案 30 :(得分:3)
我不认为,你真的需要这样做,只需在布局文件中定义你的TextView,就像这样
oc create -f pod.yaml
oc attach -t -i authoritative-dns-server
/files/run-bind.py
答案 31 :(得分:3)
在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>
答案 32 :(得分:2)
<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,你需要将它们设置为重心到中心
答案 33 :(得分:2)
<TextView
android:id="+@id/textView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
/>
答案 34 :(得分:2)
使用android:textAlignment="center"
<TextView
android:text="HOW WAS\nYOUR\nDAY?"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAlignment="center"
android:id="@+id/textView5"
/>
答案 35 :(得分:2)
<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>
答案 36 :(得分:2)
<TextView
android: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);
答案 37 :(得分:2)
你有这样的尝试吗?
<TextView
android:id="+@id/txtVw"
android:gravity="center"
/>
答案 38 :(得分:1)
迟来的GUI荣誉称号
我想为这个已经很棒的线程增加一些价值。终于在11年之后,我们现在有了一种从工具箱拖放TextView并通过GUI属性框选择重力的方法。而且,幸运的是,GUI简洁地将属性组合为“ center_vertical | center_horizontal”。
<TextView
android: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" />
答案 39 :(得分:1)
如果要使文本视图的宽度和高度用于包装内容,则必须根据父级支持的属性通过布局重力来管理其位置。否则你可以做。
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"/>
答案 40 :(得分:1)
您必须这样设置重力:
(textView.setGravity(Gravity.CENTER_VERTICAL | Gravity.CENTER_HORIZONTAL);
答案 41 :(得分:1)
您可以将重力设置为居中垂直,将文本对齐设置为居中。
<TextView
android:text="@string/yourText"
android layout_height="wrap_content"
android layout_height="wrap_content"
android:gravity="center_vertical"
android:textAlignment="center" />
答案 42 :(得分:1)
Via。xml
文件重力可以设置为居中如下
<TextView
android: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);
答案 43 :(得分:1)
让我们在屏幕上说全文查看
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:text="Hello World!"
android:gravity="center"
/>
让我们在相对布局中说Textview(不完整)
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello World!"
android:layout_centerInParent=true
/>
让我们在Linear_layout中说Textview(不完整)
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello World!"
android:layout_gravity="centre"
/>
答案 44 :(得分:1)
将布局文件中的gravity属性设置为
android:gravity="center"
答案 45 :(得分:1)
如果您使用RelativeLayout
,请尝试在TextView
代码中使用此属性:
android:layout_centerInParent= true
答案 46 :(得分:1)
使用android:gravity="center"
解决您的问题。
答案 47 :(得分:1)
试试这个:
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
/>
答案 48 :(得分:0)
There are 2 ways to do this :
1. From Xml
use :
<TextView
.........
android:gravity="center"/>
2. From Java class
use :
[textview].setGravity(Gravity.CENTER);
答案 49 :(得分:0)
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 ) Center TextView Horizontally
<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 ) Center TextView Vertically
android:layout_gravity=”center_vertical” dose not work!!
To center TextView vertically, you need to make a trick. Place TextView inside a RelativeLayout then set the TextView attribute 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" >
<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 ) Center Text Horizontally
android:gravity=”center_horizontal"
( 4 ) Center Text Horizontally & Vertically
android:gravity=”center” this will center the text horizontally and vertically
<TextView android:layout_width="fill_parent" android:layout_height="100dp" android:text="Hello World!" android:gravity="center" android:background="#333" android:textColor="#fff" />
答案 50 :(得分:0)
科特林:
如果您想将TextView
放在代码的中心,
textView.gravity = Gravity.CENTER
如果您想horizontally
居中:
textView.gravity = Gravity.CENTER_HORIZONTAL
或者,vertically
中心:
textView.gravity = Gravity.CENTER_VERTICAL
答案 51 :(得分:0)
如果XML文件中只有一个TextView,则可以使父视图重力为中心。 这样会将您的子元素放置在屏幕中央,然后可以将您的子视图作为高度和宽度的包装。
答案 52 :(得分:0)
Textview的宽度和高度应为match_parent,并在您的textview属性中添加android:gravity =“ center”。
答案 53 :(得分:0)
尝试一下:
如果您使用的是 textview高度和宽度match_parent ,请使用LinearLayout。如果您使用textview的高度和宽度,您可以将重力文字设置为居中,将文本对齐方式设置为水平居中宽度wrap_content,然后在LinearLayout中添加重心属性。
XML代码
<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代码
您可以通过编程方式执行以下操作:-
(textView.setGravity(Gravity.CENTER_VERTICAL | Gravity.CENTER_HORIZONTAL);
谢谢
答案 54 :(得分:0)
对于那些想知道如何在TextView元素中垂直居中而同时将其保持在左侧(水平)的人:
android:gravity="center"
android:textAlignment="viewStart"
答案 55 :(得分:0)
尝试一下:
mdls
答案 56 :(得分:0)
您可以在Java中使用以下方式以编程方式执行此操作:textview.setGravity(Gravity.CENTER);
答案 57 :(得分:0)
您可以为此更改android:gravity
。
android:gravity="center"
或
如果您想将水平或垂直居中
android:gravity="center_horizontal"
android:gravity="center_vertical"
答案 58 :(得分:0)
&sem
答案 59 :(得分:0)
这是解决方案。
restart: always
答案 60 :(得分:0)
使用android:gravity =&#34; center&#34;到父母
<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>
答案 61 :(得分:0)
您可以使用android:gravity =“center”
来居中文本视图代码如下
<TextView
android:text="@string/yourText"
android layout_height="wrap_content"
android layout_height="wrap_content"
android:gravity="center" />
答案 62 :(得分:0)
在TextView中使用重力属性使文本垂直和水平居中。
android:gravity="center"
答案 63 :(得分:0)
我添加了xml片段,以便在线性和相对布局中对齐textview中心。
线性布局
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Text In Center"
android:layout_gravity="center"
android:gravity="center"/>
在相对布局中
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:text="Text In Center"
android:layout_centerInParent= true/>
答案 64 :(得分:0)
在任何视图的ConstraintLayout中:
(当您使用约束布局时,将height&amp; width设置为0,并让约束来管理视图边界。)
p1 <- ggplot(diamonds,aes(cut,price,fill=color)) +
geom_bar(stat = "identity", na.rm=TRUE)
答案 65 :(得分:-1)
android:gravity="centre"
这将帮助您将文本视图居中。