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

如何在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"

至少用于格式化文本。