小白7码-android原生开发皮毛系列(6)-LinearLayout线性布局

横向 & 竖向

LinearLayout最基本的用法类似于Web中流式布局中最基础的形式,就是从上到下,从左到右。但是LinearLayout无法做到同时从上到下,从左到右,我们只能二选一,这就是LInearLayout的横向或者竖向的选择,由LinearLayout的orientation属性控制, 如图1所示:

图 1. LinearLayout的横向和竖向设置

在上面的例子中,我们可以看到两个主要元素: 图片和书名,那么在横向时候,我们怎么做呢?首先需要将LinearLayout的orientation设置为horizontal即从左到右,然后在LinearLayout中丢一个ImageView和TextView用于显示图片和书名如图2所示:

图2 LinearLayout横向事例代码

而要想LinearLayout从上到下显示,可以将orientation设置为vertical,那么上面的事例就可以变成图3所示:

图3 LinearLayout竖向事例代码

那么为什么谷歌不设计一个可以同时从上到下,从左到右的布局控件?小白猜测真相是为了节约性能,毕竟早期的移动设备的性能确实无法与同时期的箱式电脑相比,而且Web流式布局需要消耗比较大的算力。如果猜测成真,那么LinearLayout无疑是有缺陷的,不然ConstraintLayout就不会存在了。

权重

对于LinearLayout一个很重要的概念是绕不过去的,那就是权重。权重简单来说就是比例,用于分配空间的比例,当然这个比例需要通过计算得出,而权重就是帮助计算比例的一个数值。但是权重还有设置和不设置的选择,所以此外还得考虑权重不设置以及LinearLayout内部控件大小溢出等情况,所以总的来说会比较复杂。

没有权重

小白在使用LinearLayout横向模式时,经常忽略一个事实是就是LinearLayout在横向模式下,是可以不用设置权重的。那么不设置权重,LinearLayout会什么样的表现呢? 首先小白先上一个正常设置了权重的的实例:

图4 正常有权重实例

在上面实例里,我们总共有三个元素:

  1. 固定尺寸的图书图标图片

  2. 带权重的书名文本

  3. 固定尺寸的功能性小图标

那么如果我们去掉LinearLayout所有子元素的layout_weight即去除权重,并且给子元素赋予有效的宽度值。例如把书名文本的layout_weight去掉,并且将它的layout_width设置为wrap_content, 那么最后的效果就如下图所示:

图5 无权重实例

如上图所示,如果去掉权重,那么LinearLayout不会计算控件空间比率,而是顺序根据子控件的空间大小以次显示。如果没有多余的空间显示下控件的任何一部分,即使压缩控件的空间也不能达到显示的目的,将不会显示。

有无权重搭配

最后

针对Android程序员,我这边给大家整理了一些资料,包括不限于高级UI、性能优化、架构师课程、NDK、混合式开发(ReactNative+Weex)微信小程序、Flutter等全方面的Android进阶实践技术;希望能帮助到大家,也节省大家在网上搜索资料的时间来学习,也可以分享动态给身边好友一起学习!

往期Android高级架构资料、源码、笔记、视频。高级UI、性能优化、架构师课程、混合式开发(ReactNative+Weex)全方面的Android进阶实践技术,群内还有技术大牛一起讨论交流解决问题。


《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》点击传送门,即可获取!
题+项目实战源码》点击传送门,即可获取!**

  • 5
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值