如何在TextView中将文本水平和垂直居中?

最后发布: 2009-01-11 00:27:55


问题

如何在TextView水平和垂直居中放置文本,以使其准确显示在Android TextView的中间?

android textview
回答

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


回答

android:gravity="center" 

这将解决问题


回答

您还可以使用以下方法动态设置它:

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


回答

android:layout_centerInParent="true"

与RelativeLayout一起使用时,该布局的高度和宽度均设置为wrap_content。


回答

您也可以使用以下组合:

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 (居中水平和居中垂直):

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's高度和宽度是wrap contentTextView的文本始终居中。 但是,如果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>


回答

当对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>


回答

您只需将textview的gravity设置为CENTER


回答

最简单的方法(令人惊讶的是仅在评论中提及,因此我将其发布为答案)是:

textview.setGravity(Gravity.CENTER)


回答

如果您尝试将文本放在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: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重力设置为居中:

<TextView
    android:gravity="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>

并且在语法上父级是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:layout_width="match_parent"
        android:layout_height="match_parent"
        android:gravity="center" />


回答

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

LinearLayout

如果您使用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

使用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>


回答

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

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


回答

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


回答

使用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>