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

How do I center the text horizontally and vertically in a TextView, so that it appears exactly in the middle of the TextView in Android?

转载于:https://stackoverflow.com/questions/432037/how-do-i-center-text-horizontally-and-vertically-in-a-textview

0
csdnceshi59
ℙℕℤℝ fill_parent is deprecated now so use MATCH_PARENT in layout_width and layout_height and set gravity of the TextView to center.
12 个月之前 回复
weixin_41568134
MAO-EYE set both layout_width and layout_height to fill_parent, then set gravity to center. That'll do the trick
接近 4 年之前 回复

30个回答

I'm assuming you're using XML layout.

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

You can also use gravity center_vertical or center_horizontal according to your need.

and as @stealthcopter commented in java: .setGravity(Gravity.CENTER);

21
csdnceshi68
local-host The key is android:layout_height="match_parent" and android:gravity="center". If height is "wrap_content", it won't work.
一年多之前 回复
csdnceshi64
游.程 I needed to make sure the height was set to match_parent before I could get gravity="center" to work vertically in addition to working horizontally. (because if I left it as wrap-content, even if the content was in the corner of the parent, it didn't 'look' like it was centered, even though it technically was, but the height was less than the parent)
2 年多之前 回复
weixin_41568183
零零乙 you can also set manually the height and width to certain value to implement gravity.
接近 3 年之前 回复
weixin_41568127
?yb? Rob,relative layout provides android:layout_centerInParent="true"
接近 3 年之前 回复
csdnceshi72
谁还没个明天 Don't forget, there is also center_veritcal and center_horizontal.
接近 3 年之前 回复
csdnceshi52
妄徒之命 gravity=center not working. Textview height=34dp and width=100dp.Please help
3 年多之前 回复
csdnceshi70
笑故挽风 In a Relative Layout if you set: android:layout_width="wrap_content" android:layout_height="wrap_content" and android:gravity="center" that works for me.
大约 4 年之前 回复
csdnceshi54
hurriedly% Not to be confused with android:layout_gravity="center", which does something else.
4 年多之前 回复
csdnceshi67
bug^君 it sounds like your Textviews width and height are set to wrap_content. If this is the case you can set layout_gravity to center
接近 5 年之前 回复
csdnceshi59
ℙℕℤℝ This isn't working for me (android:gravity="center"). It still shows at far left of screen. :(
5 年多之前 回复
csdnceshi58
Didn"t forge If you're a minimalist like me you can drop the layout tags.
接近 7 年之前 回复
weixin_41568126
乱世@小熊 If I want to align TextView relative to another view, but it's text centered in itself?
7 年多之前 回复
csdnceshi63
elliott.david if the width and height are wrap_content, then technically, the text is already centered.
7 年多之前 回复
csdnceshi74
7*4 This doesn't work when used with a RelativeLayout where the layout's height & width are set to wrap_content
接近 8 年之前 回复
android:gravity="center" 

This will do the trick

27
weixin_41568126
乱世@小熊 when height is "wrap_content" and gravity is "center_vertical", it draws in Design (preview) as centered, but in a device it is positioned to a top. So make height "match_parent" and set gravity to "center_vertical" or "center".
一年多之前 回复
csdnceshi50
三生石@ if TextView with width and height equal "wrap_content" is inside LinearLayout with width and height "match_parent" then you need to set the layout_gravity of Linear_layout.
2 年多之前 回复
csdnceshi53
Lotus@ Duck Thus the reason to not use wrap content - it doesn't make sense. But when you're either coping and pasting or just rushing, you may not put two and two together. That's why I mentioned it.
3 年多之前 回复
csdnceshi76
斗士狗 centering text in a textview with wrap_content makes no sense at all. Maybe you're thinking of centering a textview in a parent view, in which case, you simiply put this line in the parent.
3 年多之前 回复
csdnceshi53
Lotus@ The textview has to be match_parent or fill_parent for this to work. If its wrap content, then it will not center.
接近 5 年之前 回复

You can also set it up dynamically using:

textView.setGravity(Gravity.CENTER_VERTICAL | Gravity.CENTER_HORIZONTAL);
20
csdnceshi75
衫裤跑路 so, basically xml unless it needs to be modified dynamically ... Now i got it. Thanks for your simple and useful answer !
3 年多之前 回复
csdnceshi54
hurriedly% if you want it to be easily editable and the value won't change during runtime: XML. If you must change the value realtime (for example, change the alignment when the user presses a button) then you can only do it via Java.
3 年多之前 回复
csdnceshi75
衫裤跑路 What is the criteria for judgement to decide which way to choose, to write in xml or write in Java file?
接近 4 年之前 回复
csdnceshi66
必承其重 | 欲带皇冠 Or just textview.setGravity(Gravity.CENTER);
大约 8 年之前 回复

Use in the XML file.

Layout file

<TextView
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:gravity="center"
    android:text="@string/stringtext"/>

or:

Use this inside the Java class

TextView textView =(TextView)findViewById(R.id.texviewid);
textView.setGravity(Gravity.CENTER_VERTICAL | Gravity.CENTER_HORIZONTAL);
10

If the TextView's height and width are wrap content then the text within the TextView always be centered. But if the TextView's width is match_parent and height is match_parent or wrap_content then you have to write the below code:

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

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

You can just set the gravity of your textview into CENTER.

10

As many answers suggest above works fine.

android:gravity="center"

If you want to center it just vertically:

android:gravity="center_vertical"

or just horizontally:

android:gravity="center_horizontal"
10

If you are using TableLayout make sure to set the gravity of the TableRows to center, too. Otherwise it will not work. At least it didn't work with me until I set the gravity of the TableRow to center.

For example, like this:

<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>
9
csdnceshi69
YaoRaoLov Interesting. Have to check if that is valid for LinearLayout (the TableRow parent) as well.
接近 5 年之前 回复

You can do like this to get text centered

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

We can achieve this with these multiple ways:-

XML method 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 method 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 method 03

<TextView  
    android:id="@+id/textView"
    android:layout_height="match_parent"
    android:layout_width="wrap_content" 
    android:gravity="center"
    android:text="@strings/text"
/>

XML method 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 method 01

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

Java method 02

textview.setGravity(Gravity.CENTER);

Java method 03

textView.setTextAlignment(View.TEXT_ALIGNMENT_CENTER);
9
共30条数据 1 3 尾页
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
让UITextView文字垂直居中
让UITextView和UITextField同样拥有垂直居中的属性,建议单独一个类继承自UITextView 只需要初始化UITextView之后用KVO监听 "contentSize" 属性即可 _textView = [[XHMessageTextView alloc] init];     _textView.delegate = self;    
怎么让Linearlayout里面的textview垂直居中
<LinearLayout android:layout_width="wrap_content" android:layout_height="40dp" android:orientation="vertical" android:layout_weight="1" android:gravity="center
TextView文字居中显示
项目中经常出现一种情况,当标题是一行的时候要水平居中显示,标题超过一行的时候需要左对齐显示;我们需要获取文字的显示行数来动态控制TextView的Gravity属性。 如果实在列表中使用则使用这种方式获取 tvTitle.getViewTreeObserver().addOnPreDrawListener(new ViewTreeObserver.OnPreDrawListener() { ...
长文本文本在div中垂直居中
单行文本垂直居中直接使用: line-height: 10px; 但是如果多行用这个会造成样式混乱,若要匹配多行,则在div和p标签直接在添加一层div &amp;lt;div class=&quot;a&quot;&amp;gt; &amp;lt;div class=&quot;b&quot;&amp;gt; &amp;lt;p&amp;gt;文本内容内容&amp;lt;/p&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; .a { li
iOS UITextView 垂直水平居中
主要利用的KVO,具体代码: 注册监听  [self.textView addObserver:self forKeyPath:@"contentSize" options:(NSKeyValueObservingOptionNew) context:NULL];  self.textView.text =self.content; 2.
TextView 设置行高并垂直居中
需求: TextView 多行文本可以设置行高(如20dp),每行文本垂直居中。效果如下:实现思路:通过设置 TextView 的 lineSpacingExtra 和 lineSpacingMultiplier 来实现。 lineSpacingMultiplier 的值为行间距的倍数,默认值为 1.0f。 lineSpacingExtra 值为具体的行间距值,如20dp。 垂直居中靠设置 padd
jQuery实现水平和垂直居中
实现div的实现水平和垂直居中,使用css有好多方法,这里不赘述。但是有些属性像是margin-left:-50%;这样的属性在华为手机的低版本上无法识别。 解决办法:jQuery实现水平和垂直居中 $(".mydiv").css({ position: "absolute", left: ($(window).width() - $(".mydiv"
如何水平垂直居中一个div
如何水平垂直居中一个div 这里div指的是box,所有方法都是为了让box水平垂直居中 1.固定高宽(最简单的方法) html如下: body&gt; div id=&quot;box&quot;&gt;boxdiv&gt; body&gt; css如下: width: 100px; height: 100px; position: absolute; left: 50%; top: 50%; margin-left:
Andriod中textview垂直水平居中及LinearLayout内组件的垂直布局
1、textview 垂直水平居中的设置 android:gravity="center_vertical|center" 2、LinearLayout中设置控件垂直布局,默认的是水平布局,若想让LinearLayout中的组件垂直布局的话,要这样写:android:orientation="vertical"
HTML中CSS文本、子元素、图片水平居中和垂直居中的几种方法
CSS文本居中 1.单行文本居中 水平居中:text-align:center; 垂直居中:line-height:XXpx;/*line-height与该元素的height的值一致*/ &amp;lt;!DOCTYPE html&amp;gt; &amp;lt;html&amp;gt; &amp;lt;head&amp;gt; &amp;lt;meta charset=&quot;UTF-8&quot;&amp;gt; &amp;lt;title&amp;gt;&amp;lt;/t..
用CSS使div在整个页面中(水平、垂直)都居中——万能的
<style> html,body{ height: 100%; } body{ display: flex; align-items: center; align-content: center; } div { margin:0 auto; } </style>
UITextView 单行垂直居中显示
[textView addObserver:selfforKeyPath:@"contentSize"options:NSKeyValueObservingOptionNewcontext:nil];//也可以监听contentSize属性 //接收处理 - (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)ob
多种方法实现水平居中和垂直居中总结
水平居中和垂直居中在编写HTML5静态页面过程中经常遇到,现在就来总结一下对于不同的元素如何实现居中。 一、水平居中: 1、对于行内元素,在父级块级元素css属性中使用 text-align:center即可。 2、对于width固定的块级元素,使用margin:20px auto; /* margin-left 与 margin-right 设置为 auto */ ...
Android进阶(二十二)设置TextView文字水平垂直居中
设置TextView文字水平垂直居中      有2种方法可以设置TextView文字居中:      一:在xml文件设置:android:gravity="center"      二:在程序中设置:m_TxtTitle.setGravity(Gravity.CENTER);      备注:android:gravity和android:layout_gravity的区别在于前者对控件内部操
实现textview同时具有水平滚动条和垂直滚动条
Android1.5中新加了个widget,叫做HorizontalScrollView,可以实现水平滚动,ScrollView可以实现垂直滚动,两个widget嵌套使用就可以实现水平、垂直滚动了!     android:layout_width="fill_parent
怎么让子元素在父元素中水平垂直居中
第一种方法:使用绝对定位 此方法要求父元素要有高度,父元素开启相对定位,子元素开启绝对定位. 注意:如果父元素没有高度也没有开启相对定位,则子元素会相对于body水平垂直居中. 第二种方法:使用flex布局 在flex布局中父元素是子元素的容器,子元素是父元素的项目. 容器里设置的属性都是对于项目来说的, display:flex代表容器里的所有项目按flex布局, justify-conte...
jquery 设置页面标签水平垂直居中显示
$(function(){ $(window).resize(); }); $(window).resize(function(){ $(".center-in-center").css({ position: "absolute", left: ($(window).width() - $(".center-in-center").outerWid
使用css3将一个div水平和垂直居中显示
使用css3将一个div水平和垂直居中显示 方案一: div绝对定位水平垂直居中【margin:auto实现绝对定位元素的居中】, 代码两个关键点:1.上下左右均0位置定位;         2.margin: auto; 其width、height如何更改都是居中显示的,兼容性可以,IE7及之前版本不支持 1 .div1{ 2 3 width:
Android TextView实现垂直滚动的跑马灯效果
我们知道TextView水平方向可以设置跑马灯效果,可是垂直方向上需要跑马灯效果该如何设置呢? 先看下效果图: 附上源码: VerticalScrollTextView package com.android.uilib.view; import android.content.Context; import android.graphics.Color; import andr
html中表格table的内容水平和垂直居中显示
html中表格table的内容居中显示 在CSS样式文件中指定#class td /*设置表格文字左右和上下居中对齐*/ { vertical-align: middle; text-align: center; } /*class 是所属的类*/ <div id="class" align="center" style= "margin: 0cm 0cm 0pt; te
水平居中和垂直居中常用方法总结
水平居中 行级元素:为该行级元素的父元素设置text-align:center样式 &amp;lt;div style=&quot;width: 500px;height: 100px;border: 1px solid green;text-align:center;&quot;&amp;gt; &amp;lt;span&amp;gt;行级元素&amp;lt;/span&amp;gt; &amp;lt;/div&amp;gt; 块级元素:为其自身设置margin...
jQuery实现DIV屏幕自动水平垂直居中
//封装jQuery插件版 (function($) { var methods = { autosize: function(ele) { if(ele.height() <= $(window).height()) { ele.css("top", ($(window).height() - ele.height()) / 2); } if(ele.wid
如何让TextView中的文字居中显示
android:gravity="center" 如果是无子空间的view设置此属性,表示其内容的重力倾向,即我们常说的对齐方式。若有子控件的view则设置的是其子空间的重力倾向.gravity还有其它值。"cener_horizontal"是将文字置于横向的中央部分。 android中gravity与android中layout_gravity的区别: android:gravity用
如何让DIV水平和垂直居中三种方法
方法1 CSS实现水平和垂直居中要让DIV水平和垂直居中,必需知道该DIV得宽度和高度,然后设置位置为绝对位置,距离页面窗口左边框和上边框的距离设置为50%,这个50%就是指页面窗口的宽度和高度的50%,最后将该DIV分别左移和上移,左移和上移的大小就是该DIV宽度和高度的一半。 .mydiv{ width:300px; height:200px; position:ab
Android的TextView中的文字居中显示
页面布局是LinearLayout里包一个TextView控件 1.方法一:TextView设置android:gravity=”center”,同时TextView设置android:layout_width=”match_parent” 举例代码: <LinearLayout android:orientation=”horizontal” android:layout_wi
Android SpannableString实现TextView不同大小文字居中显示
概述 都知道应用 SpannableString 实现TextView各种相关效果,这里遇到一种需求就是需要TextView部分文字大小不同,且居中显示。而使用SpannableString的默认效果是底部对齐,在这里就需要自定义。 效果图 默认.JPG 居中对齐.JPG 代码 默认效果的实现代码 SpannableString s...
drawableLeft与文本一起居中显示
/** * * * @author 农民伯伯 * @see http://www.cnblogs.com/over140/p/3464348.html * */ public class DrawableCenterTextView extends TextView {public DrawableCenterTextView(Context context, Att
TextView垂直方向无限滚动还有跑马灯效果
用个自定义控件 然后显示上去就可以啦 自定义控件package com.example.textviewscrollv; import android.content.Context; import android.graphics.Color; import android.os.Handler; import android.os.Message; import android.text.
html css实现文本水平垂直居中显示
这几天在工作中遇到了一个小问题:文本内容怎么能在div里水平垂直居中显示呢?同时群里的小伙伴恰巧也有提问这个问题的,所以我就总结了一下我知道的方法。 一、利用行高(line-height)和vertical-align配合实现 具体做法如下: html: &amp;lt;div class=&quot;box&quot;&amp;gt; &amp;lt;span&amp;gt;测试文字&amp;lt;/span&amp;gt; &amp;lt;/div&amp;...
解决ListView中TextView文字无法正常居中的问题
今天遇到一很蛋疼问题,TextView无法正常居中! 这是个3级联动的分类界面,刚打开的时候,挺好的 ,点击几次之后就这样了 其中item布局是这样的 <TextView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/icategory_name" and
(XML&Java)TextView居中&TextView中的文字居中
TextView居中、TextView中的文字居中(XML&Java) layout_weight属性
TextView在LinearLayout中的居中显示
所谓TextView的居中,分为两种。(1)文字在TextView控件中的居中<TextView android:id="@+id/textView2" android:layout_width="wrap_content" android:layout_height="wrap_content" and
如何让两个 TextView 在 RelativeLayout 中水平居中显示
stormzhang 的博客有一篇 Tencent Interview  其中有个问题是 如何让两个 TextView 在 RelativeLayout 中水平居中显示,第一反应是用一个 LinearLayout 包装它们。今天我想了另一种方法,布局文件如下: <RelativeLayout xmlns:android="http://schemas.android.com/a
UITextView设置文字垂直居中和LinkAttribute
UITextView设置文字垂直居中
安卓的TextView文字居中
android:gravity=&quot;center&quot;是设置文字在TextView当中居中,android:layout_gravity=&quot;center&quot;是设置在父控件当中居中,你试试这样子,按钮宽度是warp content textview宽度是fill content 然后权重是1 两个控件高度一致应该就可以了。 textview后面再放一个相同的button 设置为不可见。...
使UITextView中的内容 垂直居中
转载自:   http://blog.csdn.net/a6472953/article/details/7818016 UITextView的居中属性,只能使文字顶部居中,不能使内容垂直居中,达不到UITextFiled的居中的效果;因此想要使 UITextVIew的内容垂直居中,可以通过KVC的方式监听text或者contentSize属性,进行偏移,其实很简单,不了解KVC的可以看
对于PC和mobile 水平垂直居中适配
div{ width: 500px; height: 400px; position: absolute; top: 50%; left: 50%; margin-left: -250px; margin-top: -200px; background-color: black; } 对于PC的一个DIV居中应该是没什么问题的 这样就居中了 但是如果要
横向Linearlayout中TextView文字不能水平居中的解决方法
TextView的宽高设置为: android:layout_width="wrap_content" android:layout_height="wrap_content" 父容器Linearlayout设置gravity属性: android:gravity="center" 如果Linearlayout中有多个TextView,每个TextView再单独包裹在单个Linea
img标签在div中水平垂直居中--两种实现方式
第一种方式: text-align:center; vertical-align:middle; div{ text-align: center; vertical-align:middle;width: 400px; height: 400px; border: 1px sol...
android,textView文字纵向(竖向)排列
用java 代码实现自定义TextView
文章热词 机器学习教程 Objective-C培训 交互设计视频教程 颜色模型 设计制作学习
相关热词 mysql关联查询两次本表 native底部 react extjs glyph 图标 如何在网页制作中加入视频 如何在网页制作中插入视频