我假设您使用的是 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"
这会成功的
您还可以使用以下方法动态设置它:
textView.setGravity(Gravity.CENTER_VERTICAL | Gravity.CENTER_HORIZONTAL);
android:layout_centerInParent="true"
这在与布局的高度和宽度设置为 wrap_content 的 RelativeLayout 一起使用时有效。
TextView
中有自动换行时,这不起作用。文本将在 TextView
内为全角、多行和左对齐。它将在显示屏上显示为左对齐。您应该使用其他答案中指定的“重力”。
您还可以使用以下组合:
android:gravity="left|center"
然后,如果 textview 宽度大于“fill_parent”,则文本仍将左对齐(不居中,因为重力仅设置为“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"
/>
有两种方法可以做到这一点。
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
在图形编辑器中,您将找到所有可能的值,甚至查看它们的结果。
如果您使用 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>
您需要像这样设置 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
(“H”和“V”为大写,否则将不起作用)。
在我看来,
android:gravity="center"
比,
android:layout_centerInParent="true"
这比,
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
至少用于格式化文本。
对于线性布局:在 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's
的高度和宽度为 wrap content
,则 TextView
内的文本始终居中。但如果 TextView's
宽度为 match_parent
且高度为 match_parent
或 wrap_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">
<TextView
android: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">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:text="Hello World" />
</LinearLayout>
在对 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>
使用android:textAlignment="center"
https://i.stack.imgur.com/l0Fzk.png
<TextView
android:text="HOW WAS\nYOUR\nDAY?"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAlignment="center"
android:id="@+id/textView5"
/>
最简单的方法(令人惊讶的是,仅在评论中提到,因此我发布作为答案的原因)是:
textview.setGravity(Gravity.CENTER)
您只需将 textview 的 gravity
设置为 CENTER
。
TextView 重力根据您的父布局工作。
线性布局:
如果你使用 LinearLayout 那么你会发现两个重力属性 android:gravity & android:layout_gravity
android:gravity :表示 TextView 内部文本的布局部分,而 android:layout_gravity :表示 TextView 在父视图中的位置。
https://i.stack.imgur.com/9cxnM.png
如果您想将文本水平和垂直居中设置,请使用下面的代码
<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"
如果您尝试在 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:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/stringname"
android:layout_centerInParent="true"/>
如果您使用的是线性布局
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/stringname"
android:layout_gravity="center"/>
试试这个方法,它会工作
<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: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 的高度和宽度是换行内容,然后 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);
实际上,我们可以通过排除 fontPadding 做得更好。
<TextView
android layout_height="wrap_content"
android layout_height="wrap_content"
android:includeFontPadding="false"
android:textAlignment="center"
/>
正如许多答案所暗示的那样,上述工作正常。
android:gravity="center"
如果你想把它垂直居中:
android:gravity="center_vertical"
或只是水平:
android:gravity="center_horizontal"
简单地说,在您的 XML 文件中,将 textview 重力设置为中心:
<TextView
android:gravity="center" />
您可以这样做以使文本居中
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center" />
我们可以通过以下多种方式实现这一目标:-
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);
android:gravity="center"
)。它仍然显示在屏幕的最左侧。 :(android:layout_gravity="center"
混淆,它会做其他事情。