64 题: 如何在TextView中水平和垂直居中文本?

在...创建的问题 Fri, Apr 6, 2018 12:00 AM

如何在TextView中水平和垂直居中文本,使其恰好位于TextViewAndroid的中间?

    
1864
  1. 将layout_width和layout_height设置为fill_parent,然后将gravity设置为center。那就是诀窍
    2015-06-25 09:39:31Z
  2. fill_parent现已弃用,因此请在layout_width和layout_height中使用MATCH_PARENT,并将TextView的重力设置为居中。
    2018-06-30 09:58:00Z
  3. 醇>
    30答案                              30 跨度>                         

    我假设你正在使用XML布局。

     
    <TextView  
        android:layout_width="match_parent" 
        android:layout_height="match_parent" 
        android:gravity="center"
        android:text="@string/**yourtextstring**"
    />
    

    您也可以根据需要使用重力center_verticalcenter_horizontal

    和@stealthcopter评论 在java:.setGravity(Gravity.CENTER);

        
    2878
    2018-07-10 16:11:32Z
    1. 当与RelativeLayout一起使用时,这不起作用,其中布局的高度&amp; width设置为wrap_content
      2011-08-17 19:00:29Z
    2. @ Rob,如果宽度和高度是wrap_content,那么从技术上讲,文本已经居中。
      2011-11-17 04:06:42Z
    3. 如果我想将TextView相对于另一个视图对齐,但它的文本本身居中?
      2012-03-10 21:43:29Z
    4. 这对我不起作用(android:gravity="center")。它仍然显示在屏幕的最左侧。 :(
      2013-09-20 08:00:09Z
    5. 不要与android:layout_gravity="center"混淆,后者会做其他事情。
      2014-12-22 14:28:56Z
    6. 醇>
     
    android:gravity="center" 
    

    这样就可以了解

        
    423
    2015-03-22 14:27:07Z
    1. textview必须是match_parent或fill_parent才能使用。如果它的包装内容,则它不会居中。
      2014-08-18 15:59:13Z
    2. @ KalelWade:使用wrap_content在textview中居中文本完全没有意义。也许您正在考虑在父视图中居中文本视图,在这种情况下,您可以将此行简单地放在父视图中。
      2016-02-26 20:42:22Z
    3. @ Mooing Duck因此不使用换行内容的原因 - 它没有意义。但是当你要么应对和粘贴,要么只是匆匆忙忙时,你可能不会把两个和两个放在一起。这就是我提到它的原因。
      2016-02-26 22:04:23Z
    4. 如果宽度和高度等于“wrap_content”的TextView在LinearLayout中,宽度和高度为“match_parent”,则需要设置Linear_layout的layout_gravity。
      2017-02-01 16:08:07Z
    5. @ MooingDuck,当高度为“wrap_content”且重力为“center_vertical”时,它绘制在Design(preview)居中,但在设备中它位于顶部。因此,将高度“match_parent”设置为“center_vertical”或“c​​enter”。
      2018-02-28 08:45:54Z
    6. 醇>

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

     
    textView.setGravity(Gravity.CENTER_VERTICAL | Gravity.CENTER_HORIZONTAL);
    
        
    285
    2009-11-21 12:25:56Z
    1. 或者只是textview.setGravity(Gravity.CENTER);
      2011-04-07 16:00:36Z
    2. 判断选择哪种方式,用xml写入或用Java文件写入判断的标准是什么?
      2015-08-20 08:49:47Z
    3. @ Kenju如果您希望它可以轻松编辑,并且值不会在运行时更改:XML。如果必须实时更改值(例如,在用户按下按钮时更改对齐方式),则只能通过Java执行此操作。
      2015-11-06 00:38:13Z
    4. @ GustavoMaciel所以,除非需要动态修改,否则基本上是xml ...现在我明白了。感谢您的简单而有用的答案!
      2015-11-06 00:46:45Z
    5. 醇>
     
    android:layout_centerInParent="true"
    

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

        
    108
    2011-11-11 03:33:26Z
    1. 这使TextView居中,而不是文本。
      2013-01-12 04:08:28Z
    2. TextView中有自动换行时,这不起作用。文本将是TextView内的全宽和多线AND左对齐。它将在显示屏上显示为左对齐。您应该使用其他答案中指定的“gravity”。
      2013-04-13 03:04:37Z
    3. 醇>

    您也可以使用组合:

     
    android:gravity="left|center"
    

    然后,如果textview宽度大于“fill_parent”,则文本仍将对齐到左侧(不是重心设置为“居中”)。

        
    77
    2013-07-26 08:36:05Z

    应用重力:

     
    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"        
    />
    
        
    52
    2015-02-17 11:10:19Z

    如果您正在使用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>
    
        
    38
    2014-05-13 04:49:09Z
    1. 有趣。必须检查它是否对LinearLayout(TableRow父级)有效。
      2014-08-11 17:28:56Z
    2. 醇>

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

    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
    

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

        
    38
    2016-09-27 13:01:40Z

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

     
    android:layout_centerHorizontal="true"   
    

     
    android:layout_centerVertical="true"
    

    动态使用:

     
    textview.setGravity(Gravity.CENTER);
    textView.setGravity(Gravity.CENTER_VERTICAL | Gravity.CENTER_HORIZONTAL);
    
        
    35
    2014-05-13 04:49:52Z
    1. 代码语义错误。将layout_centerhorizontallayout_centervertical替换为layout_centerHorizontallayout_centerVertical(“H”和“V”替换为大写,否则它将不起作用。)
      2012-07-31 16:15:30Z
    2. layout_ *告诉View的父级想要的位置。没有layout_ *告诉View如何放置它的组件
      2012-10-08 07:36:34Z
    3. 醇>

    在我看来,

     
    android:gravity="center"
    

    优于

     
    android:layout_centerInParent="true"
    

    哪个好,

     
    android:layout_centerHorizontal="true"
    android:layout_centerVertical="true"
    

    至少用于格式化文本。

        
    30
    2013-01-12 04:40:21Z

    对于线性布局: 在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);
    
        
    27
    2016-01-19 06:33:00Z

    在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);
    
        
    22
    2014-05-13 04:57:25Z

    将此用于相对布局

     
    android:layout_centerInParent="true"
    

    和其他布局

     
    android:gravity="center" 
    
        
    19
    2013-10-11 11:08:21Z

    虽然使用重力适用于TextView,但在API级别17中实现了另一种方法 -

     
    textView.setTextAlignment(View.TEXT_ALIGNMENT_CENTER);
    

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

        
    15
    2013-08-24 20:50:50Z
    1. 这里描述的区别如下: stackoverflow.com/questions/16196444 /...
      2015-07-10 08:08:57Z
    2. 醇>

    如果TextView's的高度和宽度为wrap content,则TextView中的文本始终居中。但如果TextView's宽度为match_parent,高度为match_parentwrap_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>
    
        
    14
    2019-01-12 15:31:47Z

    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>
    
        
    12
    2015-04-20 15:43:03Z

    最简单的方式(令人惊讶的是,只在评论中提到,因此我发布的答案是:)

     
    textview.setGravity(Gravity.CENTER)
    
        
    11
    2015-12-15 12:38:02Z

    您可以将textview的gravity设置为CENTER

        
    11
    2016-09-27 13:02:15Z

    如果您尝试将文本放在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>
    
        
    9
    2012-07-15 02:14:08Z

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

     
    <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" />
    
        
    9
    2014-05-13 04:56:27Z

    如果您使用的是相对布局:

     
      <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"/>
    
        
    9
    2015-11-15 06:33:26Z

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

     
    android:gravity="center"
    

    如果你想垂直居中:

     
    android:gravity="center_vertical"
    

    或仅横向:

     
    android:gravity="center_horizontal"
    
        
    7
    2013-07-04 20:09:04Z

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

     
    <TextView
        android:gravity="center" />
    
        
    6
    2014-05-13 04:54:11Z

    你可以这样做以文本为中心

     
    <TextView
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:gravity="center" />
    
        
    6
    2017-06-30 09:27:32Z

    我们可以通过以下多种方式实现这一目标: -

      

    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);
    
        
    6
    2018-06-14 10:32:20Z

    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);
    
        
    6
    2019-01-09 21:44:48Z

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

    的LinearLayout 强>:

    如果您使用LinearLayout,那么您将找到两个重力属性 android:gravity&amp;机器人:layout_gravity

    android:gravity:表示TextView内部文本的布局部分 android:layout_gravity:表示父视图中的TextView位置。

    如果你想水平设置文字&amp;垂直居中然后使用下面的代码

     
    <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_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>
    
        
    5
    2019-01-11 13:53:57Z
    1. 顺便说一句,你回滚到上一版本的原因是什么?您还原的修订版本是一个很好的做法,因此编辑器提到的可以帮助文本编辑器进行编码。
      2019-03-27 12:12:55Z
    2. 醇>

    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" />
    
        
    4
    2016-05-20 10:18:11Z

    尝试这种方式,它会起作用

     
    <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>
    
        
    4
    2016-07-28 07:03:10Z

    在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>
    
        
    3
    2016-12-07 10:26:56Z
来源放置 这里