如何水平和垂直居中文本的TextView
,所以,它正好出现在中间TextView
的Android
?
我假设你正在使用XML布局.
您也可以使用重力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一起使用时,这适用于布局的高度和宽度设置为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中:
有两种方法可以做到这一点.
XML代码中的第一个.您需要注意Gravity
属性.您还可以在图形编辑器中找到此属性; 它可能比XML EDITOR更容易.
对于您的特定场景,重力值将是:
center_vertical|center_horizontal
在图形编辑器中,您将找到所有可能的值,甚至可以查看其结果.
如果您正在使用TableLayout,请确保将TableRows的重力设置为居中.否则它将无法工作.在我将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 textView1 =(TextView)findViewById(R.id.texView1); textView1.setGravity(Gravity.CENTER_VERTICAL | Gravity.CENTER_HORIZONTAL);
对于相对布局:在XML中使用这样的东西
要在运行时执行此操作,请在您的活动中使用此类内容
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文件中使用.
布局文件
要么:
在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 content
的文本TextView
.但如果TextView's
宽度是match_parent
和高度是match_parent
,wrap_content
那么你必须写下面的代码:
对于RelativeLayout:
对于LinearLayout:
使用重力适用于TextView时,在API级别17中实现了另一种方法 -
textView.setTextAlignment(View.TEXT_ALIGNMENT_CENTER);
不知道差异,但它也有效.但仅适用于API级别17或更高级别.
在RelativeLayout
,它会很好.
还有另外一个Button
你可以添加的东西.
以下适用于我.
...other button or anything else...
您可以gravity
将文本视图设置为CENTER
.
最简单的方法(令人惊讶的是,仅在评论中提到,因此我发布的答案)是:
textview.setGravity(Gravity.CENTER)
如果您尝试将文本放在TableLay中的TableRow中心,以下是我实现此目的的方法:
这是我在我的应用程序中使用的答案.它在屏幕中央显示文本.
如果您使用相对布局:
如果您使用的是LinearLayout
正如上面提到的许多答案都可以.
android:gravity="center"
如果你想垂直居中:
android:gravity="center_vertical"
或只是横向:
android:gravity="center_horizontal"
只需在XML文件中,将textview gravity设置为center:
TextView的高度和宽度是包装内容,然后textview中的文本始终居中,然后使用以下内容在其父布局中设置中心:
对于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重力按照您的父级布局工作。
LinearLayout:
如果您使用LinearLayout,则会发现两个重力属性android:gravity和android:layout_gravity
android:gravity:表示TextView内部文本的布局部分,而android:layout_gravity:表示TextView在父视图中的位置。
如果您想将文本水平和垂直居中设置,请使用以下代码
RelativeLayout:
使用RelativeLayout,您可以在TextView中使用以下属性
android:gravity =“ center”表示TextView中的文本中心。
android:gravity =“ center_horizontal”内部文本(如果要水平居中)。
android:gravity =“ center_vertical”内部文本(如果要垂直居中)。
android:layout_centerInParent =“ true”,如果您希望TextView位于父视图的中心位置。android:layout_centerHorizontal =“ true”,如果您希望TextView位于父视图的水平中心。android:layout_centerVertical =“ true”,如果您希望TextView位于父视图的垂直中心。
我们可以通过以下多种方式实现这一目标: -
XML方法01
XML方法02
XML方法03
XML方法04
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:textAlignment="center"