如何在 TextView 中水平和垂直居中文本?
Posted HuntsBot
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在 TextView 中水平和垂直居中文本?相关的知识,希望对你有一定的参考价值。
问:
如何将文本在 TextView 中水平和垂直居中,使其恰好出现在 android 中的 TextView 中间?
答1:
HuntsBot周刊–不定时分享成功产品案例,学习他们如何成功建立自己的副业–huntsbot.com
我假设您使用的是 XML 布局。
您还可以根据需要使用重力 center_vertical 或 center_horizontal。
正如@stealthcopter 评论的那样,在java中:.setGravity(Gravity.CENTER);。
对于 Kotlin 用户,.gravity = Gravity.CENTER
当与布局的高度和宽度设置为 wrap_content 的 RelativeLayout 一起使用时,这不起作用
@Rob,如果宽度和高度是 wrap_content,那么从技术上讲,文本已经居中。
如果我想将 TextView 相对于另一个视图对齐,但它的文本本身是居中的?
这对我不起作用 (android:gravity="center")。它仍然显示在屏幕的最左侧。 :(
不要与 android:layout_gravity="center" 混淆,它会做其他事情。
答2:
打造属于自己的副业,开启自由职业之旅,从huntsbot.com开始!
android:gravity="center"
这会成功的
textview 必须是 match_parent 或 fill_parent 才能工作。如果它的包装内容,那么它不会居中。
@KalelWade:使用 wrap_content 在文本视图中居中文本根本没有意义。也许您正在考虑在父视图中将文本视图居中,在这种情况下,您只需将此行放在父视图中。
@Mooing Duck 因此,不使用包装内容的原因 - 它没有意义。但是当你要么应对和粘贴或只是匆忙时,你可能不会把两个和两个放在一起。这就是我提到它的原因。
如果宽度和高度等于“wrap_content”的TextView在宽度和高度“match_parent”的LinearLayout中,那么您需要设置Linear_layout的layout_gravity。
@MooingDuck,当高度为“wrap_content”且重力为“center_vertical”时,它以设计(预览)为中心绘制,但在设备中它位于顶部。因此,将高度设为“match_parent”并将重力设置为“center_vertical”或“center”。
答3:
huntsbot.com – 程序员副业首选,一站式外包任务、远程工作、创意产品分享订阅平台。
您还可以使用以下方法动态设置它:
textView.setGravity(Gravity.CENTER_VERTICAL | Gravity.CENTER_HORIZONTAL);
或者只是 textview.setGravity(Gravity.CENTER);
选择哪种方式,写xml还是写Java文件的判断标准是什么?
@Kenju,如果您希望它易于编辑并且值在运行时不会更改:XML。如果您必须实时更改值(例如,在用户按下按钮时更改对齐方式),那么您只能通过 Java 来完成。
@GustavoMaciel 所以,基本上是xml,除非它需要动态修改......现在我明白了。感谢您的简单而有用的回答!
答4:
huntsbot.com提供全网独家一站式外包任务、远程工作、创意产品分享与订阅服务!
android:layout_centerInParent="true"
这在与布局的高度和宽度设置为 wrap_content 的 RelativeLayout 一起使用时有效。
这使 TextView 居中,而不是其中的文本。
当 TextView 中有自动换行时,这不起作用。文本将在 TextView 内为全角、多行和左对齐。它将在显示屏上显示为左对齐。您应该使用其他答案中指定的“重力”。
答5:
huntsbot.com – 程序员副业首选,一站式外包任务、远程工作、创意产品分享订阅平台。
您还可以使用以下组合:
android:gravity="left|center"
然后,如果 textview 宽度大于“fill_parent”,则文本仍将左对齐(不居中,因为重力仅设置为“center”)。
答6:
huntsbot.com全球7大洲远程工作机会,探索不一样的工作方式
应用重力:
TextView txtView = (TextView) findViewById(R.id.txtView);
txtView.setGravity(Gravity.CENTER_HORIZONTAL);
对于垂直:
txtView.setGravity(Gravity.CENTER_VERTICAL);
在 XML 中:
答7:
HuntsBot周刊–不定时分享成功产品案例,学习他们如何成功建立自己的副业–huntsbot.com
有两种方法可以做到这一点。
XML 代码中的第一个。您需要注意 Gravity 属性。您也可以在图形编辑器中找到此属性;它可能比 XML EDITOR 更容易。
对于您的特定情况,重力值将是:
center_vertical|center_horizontal
在图形编辑器中,您将找到所有可能的值,甚至查看它们的结果。
答8:
huntsbot.com – 高效赚钱,自由工作
如果您使用 TableLayout,请确保也将 TableRows 的重力设置为中心。否则它将无法正常工作。至少在我将 TableRow 的重力设置为中心之前,它对我不起作用。
例如,像这样:
有趣的。还必须检查这是否对 LinearLayout (TableRow 父级)有效。
答9:
huntsbot.com提供全网独家一站式外包任务、远程工作、创意产品分享与订阅服务!
您需要像这样设置 TextView Gravity (Center Horizontal & Center Vertical):
android:layout_centerHorizontal="true"
和
android:layout_centerVertical="true"
并动态使用:
textview.setGravity(Gravity.CENTER);
textView.setGravity(Gravity.CENTER_VERTICAL | Gravity.CENTER_HORIZONTAL);
代码语义是错误的。将 layout_centerhorizontal 和 layout_centervertical 替换为 layout_centerHorizontal 和 layout_centerVertical(“H”和“V”为大写,否则将不起作用)。
layout_* 告诉 View 的父级它想要在哪里。没有 layout_* 告诉 View 如何放置它的组件
答10:
与HuntsBot一起,探索全球自由职业机会–huntsbot.com
在我看来,
android:gravity="center"
比,
android:layout_centerInParent="true"
这比,
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
至少用于格式化文本。
答11:
保持自己快人一步,享受全网独家提供的一站式外包任务、远程工作、创意产品订阅服务–huntsbot.com
对于线性布局:在 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);
HuntsBot周刊–不定时分享成功产品案例,学习他们如何成功建立自己的副业–huntsbot.com
以上是关于如何在 TextView 中水平和垂直居中文本?的主要内容,如果未能解决你的问题,请参考以下文章