- CompoundButton 源码分析
- LinearLayout 源码分析
- SearchView 源码解析
- LruCache 源码解析
- ViewDragHelper 源码解析
- BottomSheets 源码解析
- Media Player 源码分析
- NavigationView 源码解析
- Service 源码解析
- Binder 源码分析
- Android 应用 Preference 相关及源码浅析 SharePreferences 篇
- ScrollView 源码解析
- Handler 源码解析
- NestedScrollView 源码解析
- SQLiteOpenHelper/SQLiteDatabase/Cursor 源码解析
- Bundle 源码解析
- LocalBroadcastManager 源码解析
- Toast 源码解析
- TextInputLayout
- LayoutInflater 和 LayoutInflaterCompat 源码解析
- TextView 源码解析
- NestedScrolling 事件机制源码解析
- ViewGroup 源码解析
- StaticLayout 源码分析
- AtomicFile 源码解析
- AtomicFile 源码解析
- Spannable 源码分析
- Notification 之 Android 5.0 实现原理
- CoordinatorLayout 源码分析
- Scroller 源码解析
- SwipeRefreshLayout 源码分析
- FloatingActionButton 源码解析
- AsyncTask 源码分析
- TabLayout 源码解析
文章来源于网络收集而来,版权归原创者所有,如有侵权请及时联系!
1. 谈谈 LinearLayout
Android 的常用布局里,LinearLayout 属于使用频率很高的布局。RelativeLayout 也是,但相比于 RelativeLayout 每个子控件都需要给上 ID 以供另一个相关控件摆放位置来说,LinearLayout 两个方向上的排列规则在明显垂直/水平排列情况下使用更加方便。
同时,出于性能上来说,一般而言功能越复杂的布局,性能也是越低的(不考虑嵌套的情况下)。相比于 RelativeLayout 无论如何都是两次测量的情况下,LinearLayout 只有子控件设置了 weight 属性时,才会有二次测量,其余情况都是一次。
另外,LinearLayout 的高级用法除了 weight,还有 divider,baselineAligned 等用法,虽然用的不常见就是了。
以下是 LinearLayout 相比于其他布局所拥有的特性:
属性 | 值类型 | 描述 | 备注 |
---|---|---|---|
orientation | int | 作为 LinearLayout 必须使用的属性之一,支持纵向排布或者水平排布子控件 | |
weightSum | float | 指定权重总和 | 缺省值为 1.0 |
baselineAligned | boolean | 基线对齐 | |
baselineAlignedChildIndex | int | 该 LinearLayout 下的 view 以某个 继承 TextView 的 View 的基线对齐 | |
measureWithLargestChild | boolean | 当值为 true,所有带权重属性的 View 都会使用最大 View 的最小尺寸 | |
divider(需要配合 showDividers 使用) | drawable in java/reference in xml | 如同您常在 ListView 使用一样,为 LinearLayout 添加分割线 | [api>11] 同时如果是自己建立的 drawable,请指定 size |
【注意】divider 附加属性为 showDividers(middle|end|beginning|none):
- middle 在每两项之间添加分割线
- end 在整体的最后一项添加分割线
- beginning 在整体的首项添加分割线
- none 无
本篇主要针对 LinearLayout 垂直方向的测量、weight 和 divider 进行分析,其余属性因为比较冷门,因此不会详说
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论