LinearLayout和RelativeLayout对比

LinearLayout和RelativeLayout是Android中应用最为广泛的两种布局, 绝大部分UI均可以通过两种布局中的任何一种进行实现,其对比如下:
LinearLayout:

  1. LinearLayout可以实现子View按照权重分配显示区域,RelativeLayout则不行。

  2. 实现复杂的UI布局,LinearLayout通常需要更多的布局层级

  3. 相同UI同等层级情况下LinearLayout通常layout和draw性能更好。这是因为而LinearLayout只需调用一次measure过程,而RelativeLayout会调用2次。但是有weight属性存在时,LinearLayout 也需要两次measure。

RelativeLayout:

  1. RelativeLayout可以实现分层布局,LinearLayout则不行。使用RelativeLayout时需注意上层的view可能不遮挡遮挡下层View的展示,但遮挡其点击事件。

  2. RelativeLayout的在复杂嵌套布局中,可以降低布局嵌套层级 。

  3. RelativeLayout的子View如果高度和RelativeLayout不同,会导致RelativeLayout在onMeasure()方法中做横向测量时,纵向的测量结果尚未完成,只好暂时使用自己的高度传入子View系统。这可能会导致额外的计算开销。解决办法就是可以使用padding代替margin以优化此问题。

相关推荐
Dovis(誓平步青云)3 小时前
家里设备越来越多,如何用一张空间地图控制灯光和温度![
android·java·前端·javascript·人工智能·电脑
晚风叙码4 小时前
MySQL 数据类型详解:从数值到字符串,一篇讲透
android·mysql·adb
传奇开心果编程5 小时前
【Compose Multiplatform 跨端开发学与练】第3课 布局与组件
android·windows·学习·ui·ios·kotlin·composer
传奇开心果编程8 小时前
【Compose Multiplatform 跨端开发学与练】第8课 资源管理与主题
android·windows·学习·ios·kotlin·web·composer
传奇开心果编程9 小时前
【Compose Multiplatform 跨端开发学与练】第9课 测试与调试
android·学习·macos·ios·kotlin·web·composer
传奇开心果编程9 小时前
【Compose Multiplatform 跨端开发学与练】第4课 导航与路由
android·windows·学习·ui·ios·kotlin·composer
传奇开心果编程10 小时前
【Compose Multiplatform 跨端开发学与练】第6课 状态管理与架构
android·学习·ui·ios·架构·kotlin·composer
事圆则缓10 小时前
Android AOSP 定制常见概念:源码目录、系统镜像与刷机流程
android
传奇开心果编程10 小时前
【Compose Multiplatform 跨端开发学与练】第2课 Compose 基础语法
android·windows·学习·ui·ios·kotlin·composer
supabc12310 小时前
Celium:连接 Windows、Mac、Linux 与 Android,让远程访问和设备管理更简单
android·linux·windows·macos·远程访问·网络管理·celium