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

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

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

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

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

原因就是在于基线对齐。

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

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

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

最终效果如下

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

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
回答: 在CSS,要设置垂直方向上的文本对齐方式,可以使用vertical-align属性。这个属性可以应用于同一行的任意一个选择器,或者父元素的样式上。常用的属性值包括: baseline(使元素的基线与父元素的基线对齐)、sub(使元素的基线与父元素的下标基线对齐)、super(使元素的基线与父元素的上标基线对齐)、text-top(使元素的顶部与父元素的字体顶部对齐)、text-bottom(使元素的底部与父元素的字体底部对齐)、middle(使元素的部与父元素的基线加上父元素高的一半对齐)、top(使元素的基线对齐到父元素的基线之上的给定长度,可以是负数)、bottom(使元素的基线对齐到父元素的基线之上的给定百分比)等。例如,如果要将一个元素的基线与父元素的顶部对齐,可以设置vertical-align: top;。实际测试结果如下所示: <div class="box1"> 哈哈 </div> <div class="box2"> 呵呵 </div> <style> .box1 { display: inline-block; width: 100px; height: 100px; background-color: red; color: white; font-size: 48px; } .box2 { display: inline-block; width: 50px; height: 50px; background-color: blue; color: white; font-size: 16px; } </style> 在上述示例,.box1元素的基线与父元素的顶部对齐,而.box2元素的基线则与父元素的基线对齐。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [CSS基线对齐的理解以及处理](https://blog.csdn.net/weixin_43324314/article/details/106894148)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] - *2* [【CSS】vertical-align属性](https://blog.csdn.net/dyk11111/article/details/128114234)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值