Android中关于线性布局基线对齐

线性布局及其子类布局中有基线对齐这个特性,即对所有能有基线(即getBaseline()返回正值)的View视图(一般多为TextView子类)默认采用基线对齐。

一般情况下它能很好的帮助我们对齐控件,显得很整洁,如下

可是当我们的文字是多行(或者两个控件之间的字体相差较多)的时候问题就出现了。

可以发现莫名奇妙的不对齐了,甚至有一部分已经在父控件显示范围之外了。

原因就是在于基线对齐。

看这个大图,父控件自动帮我们进行了基线对齐,而基线对齐默认是对齐第一行文字,所以就出现了这种情况。

至于怎么解决有两种方法,一种是为父控件增加 android:gravity="center_vertical"属性,这个属性一旦设置将会覆盖基线对齐的属性设置。

另一种推荐的方法就是明确在父控件声明不需要进行基线对齐 在XML中通过android:baselineAligned="false"或在Java通过 setBaselineAligned(false)来设置。

最终效果如下

有网友从源码角度分析了这个问题,地址为:http://blog.csdn.net/bdmh/article/details/48495583

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值