提问



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

最佳参考


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

其它参考1


android:gravity="center" 


这样就可以了

其它参考2


您还可以使用以下命令动态设置:


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

其它参考3


android:layout_centerInParent="true"


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

其它参考4


您也可以使用组合:


android:gravity="left|center"


然后,如果textview宽度大于fill_parent,则文本仍然会对齐到左边(不是居中,重力设置只是center)。

其它参考5


应用重力:


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

其它参考6


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

其它参考7


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


android:layout_centerHorizontal="true"   





android:layout_centerVertical="true"


并动态使用:


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

其它参考8


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


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


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

其它参考9


我的想法是,


android:gravity="center"


比...更好


android:layout_centerInParent="true"


哪个更好,


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


至少用于格式化文本。

其它参考10


对于线性布局:
在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"
/>


要在运行时执行此操作,请在您的Activity中使用此类内容


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


要在运行时执行此操作,请在您的Activity中使用此类内容


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

其它参考11


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

其它参考12


用于相对布局


android:layout_centerInParent="true"


以及其他布局


android:gravity="center" 

其它参考13


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


textView.setTextAlignment(View.TEXT_ALIGNMENT_CENTER);


不知道区别,但它也有效。但仅限于API级别17或更高级别。

其它参考14


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>

其它参考15


如果TextView's的高度和宽度为wrap content,则TextView内的文本始终居中。但如果TextView's宽度为match_parent且高度为match_parentwrap_content,则必须编写以下代码:


对于 RelativeLayout:


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


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

其它参考16


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


textview.setGravity(Gravity.CENTER)

其它参考17


您可以将文本视图的gravity设置为CENTER

其它参考18


如果你试图在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>

其它参考19


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


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

其它参考20


如果您使用相对布局:


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

其它参考21


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


android:gravity="center"


如果你想垂直居中:


android:gravity="center_vertical"


或只是横向:


android:gravity="center_horizontal"

其它参考22


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


<TextView
    android:gravity="center" />

其它参考23


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代码,这在运行时在你的Activity中使用这样的东西


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

其它参考24


您可以这样做以使文本居中


<TextView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:gravity="center" />

其它参考25


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



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

其它参考26


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

其它参考27


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


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

其它参考28


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

其它参考29


TextView重力根据您的父布局工作。


的LinearLayout :


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


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


[76]


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


<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内部文本,如果你想垂直居中。


如果希望TextView位于父视图的中心位置,则android:layout_centerInParent =true。
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>