android 中使文本(TextView 、button等可参考)在屏幕正中心显示的方法

本文主要是介绍android 中使文本(TextView 、button等可参考)在屏幕正中心显示的方法,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

android:layout_gravity 和 android:gravity 属性用法和布局差异在此很好地体现。

为了简单,Acitivity 统一如以下方式:


import android.app.Activity;
import android.os.Bundle;public class TETActivity extends Activity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_tet);}
}

方法一:使用FrameLayout 布局方式 ,使TextView组件居中,设置<TextView>标签的android:layout_gravity属性

 方法二、仍然使用FrameLayout 布局,但是使文本居中,使用TextView 的 android:gravity 属性

特别注意,如果你已经看到这里,请注意,方法一和方法二的一些区别:

因为layout_gravity属性是指 textview相对于父布局,在此也就是指屏幕FrameLayout而言的位置,因为方法一里,用到是layout_gravity 中center,即TextView 位于 framelayout的 正中心。所以TextView 此时会在屏幕正中心。因为TextView的 宽和高设置分别为包裹内容即可,所以可以看到 文字正好居中(文字此时和承载文字的TextView 之间没有间隔)

但是方法二中,看似差不多,但是如果你只是简单根据提示,仅仅将TextView 的 layout_gravity属性更改为gravity 属性,是达不到我们的目标效果的。因为此时只能保证textiView 中的文字在textView的正中间,但textView 本身却在父布局FrameLayout 的左上角。 方法如下图。 (注:所以方法二中,为了简单实现,将textView 的宽高设为全屏, 强制达到了预期。但该方案一般不用,因为很难见到一个Activity 上只放置一个Textview  的情形。 在此只为说明这两个属性差异,而展示。)

如下所示

方法三、LinearLayout 布局中,使Textview组件居中,为LinearLayout 设置android:gravity 属性

 内容扩展:关于textVIew 、Button等组件居中的问题,如上已经反映了该类问题一般做法,对于让文字居中,相对来说,要求更加严格,但方法一和 方法三 的本质都是要求先使得组件本身位于屏幕中间,而组件内的文字 根据组件的gravity属性来设置的方法进行确定。

此处最常见的一个问题是,LinearLayout 布局下,Textview 组件 layout_gravity 属性不一定任何时候都能用,比如 当linearLayout的 orientation 属性设置为 vertical时 ,

当作为父layout的LinearLayout的属性为android:orientation="vertical" 的时候,android:layout_gravity="?"这里设为横向的时候才能生效。比如:left,right,center_horizontal等;
当作为父layout的LinearLayout的属性为android:orientation="horizental" 的时候,android:layout_gravity="?"这里设为纵向的时候才能生效。比如:top,bottom,center_vertical

具体可查看相关资料,比如我参考的文章链接 :

https://www.cnblogs.com/zhangshuli-1989/p/zhangshuli_gravity_150421112.html

关于LinearLayout 布局中更多 和gravity相关的内容,可参考

https://myeasyeye.iteye.com/blog/1941026

 

这篇关于android 中使文本(TextView 、button等可参考)在屏幕正中心显示的方法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/187881

相关文章

PHP轻松处理千万行数据的方法详解

《PHP轻松处理千万行数据的方法详解》说到处理大数据集,PHP通常不是第一个想到的语言,但如果你曾经需要处理数百万行数据而不让服务器崩溃或内存耗尽,你就会知道PHP用对了工具有多强大,下面小编就... 目录问题的本质php 中的数据流处理:为什么必不可少生成器:内存高效的迭代方式流量控制:避免系统过载一次性

python获取指定名字的程序的文件路径的两种方法

《python获取指定名字的程序的文件路径的两种方法》本文主要介绍了python获取指定名字的程序的文件路径的两种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要... 最近在做项目,需要用到给定一个程序名字就可以自动获取到这个程序在Windows系统下的绝对路径,以下

JavaScript中的高级调试方法全攻略指南

《JavaScript中的高级调试方法全攻略指南》什么是高级JavaScript调试技巧,它比console.log有何优势,如何使用断点调试定位问题,通过本文,我们将深入解答这些问题,带您从理论到实... 目录观点与案例结合观点1观点2观点3观点4观点5高级调试技巧详解实战案例断点调试:定位变量错误性能分

Python中 try / except / else / finally 异常处理方法详解

《Python中try/except/else/finally异常处理方法详解》:本文主要介绍Python中try/except/else/finally异常处理方法的相关资料,涵... 目录1. 基本结构2. 各部分的作用tryexceptelsefinally3. 执行流程总结4. 常见用法(1)多个e

Java实现在Word文档中添加文本水印和图片水印的操作指南

《Java实现在Word文档中添加文本水印和图片水印的操作指南》在当今数字时代,文档的自动化处理与安全防护变得尤为重要,无论是为了保护版权、推广品牌,还是为了在文档中加入特定的标识,为Word文档添加... 目录引言Spire.Doc for Java:高效Word文档处理的利器代码实战:使用Java为Wo

JavaScript中比较两个数组是否有相同元素(交集)的三种常用方法

《JavaScript中比较两个数组是否有相同元素(交集)的三种常用方法》:本文主要介绍JavaScript中比较两个数组是否有相同元素(交集)的三种常用方法,每种方法结合实例代码给大家介绍的非常... 目录引言:为什么"相等"判断如此重要?方法1:使用some()+includes()(适合小数组)方法2

504 Gateway Timeout网关超时的根源及完美解决方法

《504GatewayTimeout网关超时的根源及完美解决方法》在日常开发和运维过程中,504GatewayTimeout错误是常见的网络问题之一,尤其是在使用反向代理(如Nginx)或... 目录引言为什么会出现 504 错误?1. 探索 504 Gateway Timeout 错误的根源 1.1 后端

Android协程高级用法大全

《Android协程高级用法大全》这篇文章给大家介绍Android协程高级用法大全,本文结合实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友跟随小编一起学习吧... 目录1️⃣ 协程作用域(CoroutineScope)与生命周期绑定Activity/Fragment 中手

MySQL 表空却 ibd 文件过大的问题及解决方法

《MySQL表空却ibd文件过大的问题及解决方法》本文给大家介绍MySQL表空却ibd文件过大的问题及解决方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考... 目录一、问题背景:表空却 “吃满” 磁盘的怪事二、问题复现:一步步编程还原异常场景1. 准备测试源表与数据

python 线程池顺序执行的方法实现

《python线程池顺序执行的方法实现》在Python中,线程池默认是并发执行任务的,但若需要实现任务的顺序执行,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋... 目录方案一:强制单线程(伪顺序执行)方案二:按提交顺序获取结果方案三:任务间依赖控制方案四:队列顺序消