Jetpack Compose中自定义布局

文章介绍了JetpackCompose中控件的可组合性,重点讨论了Layout系统的基本原则,包括元素的测量和摆放。文中详细阐述了如何通过自定义Modifier来扩展布局功能,例如`firstBaselineToTop`方法,并提供了自定义Column布局的示例。总结了Compose的UI构建灵活性和面向组合的特性。
摘要由CSDN通过智能技术生成

 前言

Jetpack Compose中的控件被定义成一个一个的可组合函数,官方称这些控件为Composable,翻译成中文是“可组合项”,当强调它作为一个界面的一部分出现时,我会使用“控件”或“元素”之类的术语,要注意这三者之间的差别,我不知道有没有更好的词,所以我只能用这两个。当仅仅强调它是一个可组合项时,我会正常使用“可组合项”这个术语。

Layout系统

基本原则

元素需要通过一些约束来测量自己,这限制了一个元素的最大和最小的宽高。如果一个元素有子元素,那么它会测量每一个子元素来帮助决定自己的大小,每当一个元素向父元素报告了它自己的大小时,那么它就得到了相对于自身来放置自己的子元素的机会。

compose不允许多次测量,和Flutter一样,原因就是重复测量作用于UI这种树形结构的是时候会带来指数级的性能下降。当然有很多时候你需要重复获取子元素的一些信息,这会有其它的办法。

自定义layout modifier

在compose中,Modifier提供了一系列函数,使用它们可以提供很多布局上的参数,比如padding等信息,通过自定义modifier来看下它是怎么工作的。

通过扩展函数来扩展Modifier中的方法,因为modifier是链式调用的,我们扩展的方法也应该符合链式调用规则,Modifier.then方法用来辅助完成链式调用,它接受一个Modifier,返回一个与这个Modifier结合后的Modifier。


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

金戈鐡馬

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值