前言
在 Compose 中,Modifier 的调用顺序是有影响的。
修饰符列表
https://android-dot-google-developers.gonglchuangl.net/jetpack/compose/modifiers-list?hl=zh-cn
背景
1 | Modifier.background(Color.Green)) |
内外边距和背景
在 Compose 中,背景色使用 Modifier.background()
进行设置。
在 Compose 中,Margin 和 Padding 都用 Modifier.padding()
来设置。
- 没有
background
的时候是外边距
- 有
background
的时候在background
之前的是外边距
,在background
之后是内边距
pading
和background
一定要写在height
和width
前面不然会不起作用
示例:
1 | // 背景色不包括 padding 的部分,效果类似 margin |
background 还可以传入 shape 参数,来设置不同的背景形状。
Shape 对象也是一个通用的能力,例如,可以用于 clip 当中,进行裁切。
裁剪
clip: 用于裁剪组件的内容,以匹配指定的形状。
1 | Modifier.clip(shape = CircleShape) |
注意
它不会裁剪背景。
它会剪裁可点击项的涟漪效果的遮罩背景。
背景裁剪:只能通过设置背景形状实现。
1 | Modifier |
边框
border: 用于向组件添加边框。
1 | Modifier.border(width = 2.dp, color = Color.Black) |
透明度
1 | Modifier.alpha(0.5f) |
尺寸设置
固定大小
layout_width & layout_height
=> Modifier.size()
or (Modifier.width()
& Modifier.height()
)
size: 用于设置组件的固定大小。
1 | Modifier.size(width = 100.dp, height = 100.dp) |
自身大小
默认是 wrap_content
适配父大小
match_parent
=> Modifier.fillMaxWidth()
or Modifier.fillMaxHeight()
对齐
align: 用于指定组件在其父容器中的对齐方式。
align
方法用于指定组件在其父容器中的对齐方式。它适用于容器类组件,如 Box
、Column
、Row
等,以及具有布局属性的组件,如 BoxWithConstraints
。
align
方法生效的情况取决于父容器的布局方式。通常情况下,父容器需要使用相应的布局修饰符,如 Box
中的 BoxScope
、Column
中的 ColumnScope
或 Row
中的 RowScope
。
1 | Box( |
Column中使用:
1 | Column( |
位置
offset: 用于将组件从其默认位置移动指定的偏移量。
1 | Modifier.offset(x = 20.dp, y = 20.dp) |
事件
clickable: 用于使组件可点击,并指定点击事件的处理程序。
1 | Modifier.clickable(onClick = { /* 点击事件处理 */ }) |
pointerInput: 用于处理指针输入事件,例如触摸或鼠标事件。
1 | Modifier.pointerInput { /* 处理指针输入事件的逻辑 */ } |
文字大小
文字大小使用函数参数(fontSize)设置,而不是 Modifier