提问人:Pablo Fernandez 提问时间:1/11/2009 最后编辑:Alexander AbakumovPablo Fernandez 更新时间:9/4/2023 访问量:1513248
如何在 TextView 中将文本水平和垂直居中?
How do I center text horizontally and vertically in a TextView?
答:
我假设您使用的是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);
对于 Kotlin 用户,.gravity = Gravity.CENTER
评论
android:gravity="center"
android:layout_gravity="center"
您还可以使用以下方法动态设置它:
textView.setGravity(Gravity.CENTER_VERTICAL | Gravity.CENTER_HORIZONTAL);
评论
android:gravity="center"
这将解决问题
评论
如果您使用的是 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>
评论
android:layout_centerInParent="true"
这与 RelativeLayout 一起使用时有效,其中布局的高度和宽度设置为 wrap_content。
评论
TextView
TextView
您需要像这样设置 TextView Gravity (Center Horizontal & Center Vertical):
android:layout_centerHorizontal="true"
和
android:layout_centerVertical="true"
并动态使用:
textview.setGravity(Gravity.CENTER);
textView.setGravity(Gravity.CENTER_VERTICAL | Gravity.CENTER_HORIZONTAL);
评论
layout_centerhorizontal
layout_centervertical
layout_centerHorizontal
layout_centerVertical
如果您尝试在 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">
<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>
您还可以使用以下组合:
android:gravity="left|center"
然后,如果文本视图宽度大于“fill_parent”,则文本仍将向左对齐(不像重力仅设置为“center”那样居中)。
您只需将 textview 设置为 .gravity
CENTER
简单地说,在 XML 文件中,将 textview 重力设置为居中:
<TextView
android:gravity="center" />
施加重力:
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"
/>
这是我在应用程序中使用的答案。它在屏幕中央显示文本。
<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" />
正如上面的许多答案所暗示的那样,工作正常。
android:gravity="center"
如果只想垂直居中:
android:gravity="center_vertical"
或者只是水平:
android:gravity="center_horizontal"
虽然对 TextView 使用重力工作,但在 API 级别 17 中实现了一种替代方法 -
textView.setTextAlignment(View.TEXT_ALIGNMENT_CENTER);
不知道区别,但它也有效。但是,仅适用于 API 级别 17 或更高版本。
评论
在 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
android:id="+@id/textView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
/>
你试过这种方式吗?
<TextView
android:id="+@id/txtVw"
android:gravity="center"
/>
有两种方法可以做到这一点。
XML 代码中的第一个。您需要注意属性。您也可以在图形编辑器中找到此属性;它可能比 XML 编辑器更容易。Gravity
<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
在图形编辑器中,您将找到所有可能的值,甚至查看它们的结果。
对于线性布局: 在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);
如果您使用的是相对布局:
<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"/>
最简单的方法(令人惊讶的是,这只在评论中提到,因此我发布作为答案的原因)是:
textview.setGravity(Gravity.CENTER)
如果高度和宽度是,则 中的文本始终居中。但是,如果宽度是,高度是或,那么你必须编写以下代码: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>
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);
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" />
试试这种方式,它会起作用的
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:gravity="center">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAlignment="center"/>
</LinearLayout>
<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" />
对于那些想知道如何在其 TextView 元素中垂直居中,同时将其保持在左侧(水平)的人:
android:gravity="center"
android:textAlignment="viewStart"
将布局文件中的 gravity 属性设置为android:gravity="center"
<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>
如果 LinnearLayout 中有 TextView,则需要将它们都设置为重心
There are 2 ways to do this :
1. From Xml
use :
<TextView
.........
android:gravity="center"/>
2. From Java class
use :
[textview].setGravity(Gravity.CENTER);
在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
<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>
如果您正在使用 ,请尝试在标记中使用此属性:RelativeLayout
TextView
android:layout_centerInParent= true
评论
用于解决您的问题。android:gravity="center"
你可以这样做,使文本居中
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center" />
试试这个:
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
/>
TextView 重力按照父布局工作。
线性布局:
如果你使用 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,您可以在 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>
评论
android:gravity="center_horizontal"
android:layout_gravity="center_vertical"
您可以使用 android:gravity=“center” 将文本视图居中
代码如下
<TextView
android:text="@string/yourText"
android layout_height="wrap_content"
android layout_height="wrap_content"
android:gravity="center" />
如果该 TextView 的 height / width 属性未设置为 ,则使用 .但有些人抱怨使用它不起作用。那是因为它们的布局没有相同的重力。您可以设置wrap_content
android:gravity="center"
android:layout_gravity="center"
在 TEXTVIEW 中(这仅适用于 TextView)
或
android:gravity="center"
在父布局中(这将应用于其中的所有视图)
我添加了 xml 片段,使文本视图中心在线性和相对布局中都对齐。
线性布局
<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/>
在 ConstraintLayout 中,对于任何视图:
(使用约束布局时,将高度和宽度设置为 0,并让约束管理视图边界。
<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" />
如何使视图或其内容居中,例如 TextView 或 Button 水平和垂直?layout_gravity可用于定位 视图位于其父项的中心。虽然重力属性用于 将视图的内容(例如“文本”)放置在视图的中心。
( 1 ) 水平居中 TextView
<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”剂量不起作用!!
要使 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" >
<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:重力=“center_horizontal”
( 4 ) 水平和垂直居中文本
android:gravity=“center” 这将使文本水平居中,并且 垂直
<TextView android:layout_width="fill_parent" android:layout_height="100dp" android:text="Hello World!" android:gravity="center" android:background="#333" android:textColor="#fff" />
假设屏幕中的全文视图
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:text="Hello World!"
android:gravity="center"
/>
假设相对布局中的 Textview(not full)
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello World!"
android:layout_centerInParent=true
/>
假设 Textview(not full) in Linear_layout
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello World!"
android:layout_gravity="centre"
/>
我们可以通过以下多种方式实现这一目标:-
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);
通过。文件重力可以设置为居中,如下所示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);
使用 TextView 中的 Gravity 属性使文本垂直和水平居中。
android:gravity="center"
<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);
使用 android:gravity=“center” 作为父级
<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>
这是解决方案。
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:text="**Your String Value**" />
您可以将重力设置为垂直居中,将文本对齐设置为居中。
<TextView
android: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.setGravity(Gravity.CENTER);
android:gravity="center"
xml 中的这一行将帮助您将 .TextView
您必须像这样设置重力:
(textView.setGravity(Gravity.CENTER_VERTICAL | Gravity.CENTER_HORIZONTAL);
试试这个:
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center" />
<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>
试试这个:
如果使用 textview height and width 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);
谢谢
如果要使文本视图的宽度和高度换行内容,则必须根据父支持的属性通过布局重力来管理其位置。否则你可以做。
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"/>
应match_parent Textview 宽度和高度,并在 textview 属性中添加 android:gravity=“center”。
如果 XML 文件中只有一个 TextView,则可以将父视图重力设置为中心。 这将使你的子元素位于屏幕的中央,然后你可以使你的子视图作为高度和宽度的换行。
用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"
/>
评论
实际上,我们可以通过排除 fontPadding 来做得更好。
<TextView
android layout_height="wrap_content"
android layout_height="wrap_content"
android:includeFontPadding="false"
android:textAlignment="center"
/>
评论
android:includeFontPadding="false"
对于 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”。
<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" />
android:textAlignment="center"
这将解决问题
评论
重新排列布局、图像或文本视图的位置属于对齐主题。因此,如果你想将你的图像 src 垂直放在中间,你应该使用下面写的代码
android:layout_centerVertical="true"
和 center 水平
android:layout_centerHorizontal="true"
否则,我认为我们还可以使用重力将每个元素放在父布局的中间,例如android:gravity="center"
对于文本的布局,最好使用
android:textAlignment=“center”
对于对象等的其他布局,最好使用
android:重力=“center”
要在中心显示文本,例如:
------------------>text<-------------------
使用以下样式:
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_contect"
android:gravity="center"
android:text="@string/text"
/>
android:gravity="center"
只需将其添加到您的 XML 中即可。
android:gravity="center"
字体填充也会影响文本的位置,您可以通过添加 includefontpadding=false 来删除它
<TextView
android:includeFontPadding="false"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center" />
如其他答案中所述,您可以使用以下命令在 XML 中设置重力:
android:gravity="center"
在 Java 代码中:
textview.setGravity(Gravity.CENTER)
在 Kotlin 代码中:
textview.gravity = Gravity.CENTER
但是,如果您在 Kotlin Compose 中执行此操作,则可以使用以下命令将重力居中:
textAlign = TextAlign.Center
只是把它留在这里,以防万一它为我节省了我花了 2 个小时才找到:
如果文本在给定维度中太大,则不会尝试将其在该维度中居中。这是有道理的,但默认情况下具有“字体填充”。因此,可以设置文本大小,使高度看起来可以舒适地放入文本视图中,但实际上它“太大”,因为它会侵占字体填充。在这种情况下,文本不会垂直居中,请求将被忽略。解决方案很简单 - 只需删除这个烦人的字体填充:TextView
android:includeFontPadding="false"
然后它按预期垂直居中。
评论