TextView 设置行高并垂直居中

本文介绍了如何在Android中实现TextView的行高设置为20dp并保持垂直居中。通过调整`lineSpacingMultiplier`和`lineHeight`属性,以及探讨TextView的Layout、TransformationMethod、MovementMethod等内部机制,展示了实现这一需求的详细步骤。同时,注意到`setIncludeFontPadding`会影响文字的上下边距,可能导致某些语言显示不完整。最后,建议封装成自定义控件以适应EditText的行高变化。
摘要由CSDN通过智能技术生成

需求: TextView 多行文本可以设置行高(如20dp),每行文本垂直居中。

效果如下:

多行文本,设置行高,垂直居中

实现思路:通过设置 TextView 的 lineSpacingExtralineSpacingMultiplier 来实现。

  • lineSpacingMultiplier 的值为行间距的倍数,默认值为 1.0f。
  • lineSpacingExtra 值为具体的行间距值,如20dp。
  • 垂直居中靠设置 paddingTop 和 paddingBottom

TextView 相关

TextView 内部除了继承自 View 的相关属性和 measure、layout、draw步骤,还包括:
- Layout: TextView 的文字排版、折行策略以及文本绘制都是在 Layout 里面完成的,TextView 的自身测量也受 Layout 的影响。Layout 是 TextView 执行setText方法后,由 TextView 内部创建的实例,并不能由外部提供。Layout有三个子类,BoringLayout、DynamicLayout、StaticLayout。
- TransformationMethod: 用来处理最终的显示结果的类,例如显示密码的时候把密码转换成圆点。这个类并不直接影响 TextView 内部储存的 Text ,只影响显示的结果。
- MovementMethod: 用来处理 TextView 内部事件响应的类,可以针 对TextView 内文本的某一个区域做软键盘输入或者触摸事件的响应。
- Drawables: TextView 的静态内部类,用来处理和储存 TextView 的 CompoundDrawables ,包括 TextView 的上下左右的 Drawable 以及错误提示的 Drawable。
- Spans: Spans 并不是特定的某一个类或者实现了某一个接口的类。它可以是任意类型,Spans实际上做的事情是在 TextView 的内部的 text 的某一个区域做标记。其中有部 分Spans 可以影响TextView的绘制和测量,如 ImageSpan、BackgroundColorSpan、AbsoluteSizeSpan。还有可以响应点击事件的ClickableSpan。
- Editor: TextView作为可编辑文本控件的时候(EditText),使用Editor来处理文本的区域选择处理和判断、拼写检查、弹出文本菜单等。
- InputConnection: EditText 的文本输入部分是在 TextView 中完成的。而 InputConnection 是软键盘和TextView之间的桥梁,所有的软键盘的输入文字、修改文字和删除文字都是通过 InputConnection 传递给 TextView 的。

TextView 默认文字的上下边距

TextView 的 textSize 属性代表的意义是字体的大小,体现为字体高度,一般单位是 sp, sp 代表的字体大小根据手机设置的文字大小有关,默认的 1sp = 1dp。但是Android 系统会默认的给文字增加一点边框。
默认效果

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值