如何使文本水平和垂直居中 TextView, ,这样它就恰好出现在 TextViewAndroid?

有帮助吗?

解决方案

我假设您正在使用 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);

其他提示

android:gravity="center" 

这样就可以了解

您也可以使用以下方式动态设置:

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

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

您也可以使用组合:

android:gravity="left|center"

然后,如果textview宽度大于“fill_parent”,文本仍然会向左对齐(不是以重力设置为中心,只是“中心”)。

应用重力:

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的重力设置为居中。 否则它将无法工作。在我将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>

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

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

在图形编辑器中,您将找到所有可能的值,甚至可以查看其结果。

您需要设置 TextView Gravity (中心水平和垂直中心),如下所示:

android:layout_centerHorizontal="true"   

android:layout_centerVertical="true"

动态使用:

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

在我看来,

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,但在API级别17中实现了另一种方法 -

textView.setTextAlignment(View.TEXT_ALIGNMENT_CENTER);

不知道差异,但它也有效。但仅适用于API级别17或更高级别。

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

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)

您可以将textview的 gravity 设置为 CENTER

如果您尝试将文本放在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>

这是我在我的应用中使用的答案。它在屏幕中央显示文本。

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

正如上面提到的许多答案都可以。

android:gravity="center"

如果你想垂直居中:

android:gravity="center_vertical"

或仅横向:

android:gravity="center_horizontal"

只需在XML文件中,将textview gravity设置为center:

<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);

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);

TextView 重力按照您的父布局工作。

线性布局:

如果使用线性层状,则会找到两个重力属性Android:Gravity&Android:Layout_gravity

机器人:重力:代表文本视图内部文本的布局药水,而Android:layout_gravity:表示 TextView 在父视图中的位置。

enter image description here

如果您想设置文本水平和垂直居中,请使用下面的代码

<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_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>

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_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>
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top