#每天一个知识点#
Android Studio 内置Compose实时模板系列
操作方式:选中Compose代码片段,输入缩写,按下 Tab 自动包裹
缩写 名称 功能
WC Wrap Column 用 Column {} 包裹选中代码
WR Wrap Row 用 Row {} 包裹选中代码
W Wrap Box 用 Box {} 包裹选中代码
WS Wrap Surface 用 Surface {} 包裹选中代码WCrd Wrap Card 用 Card {} 包裹选中代码
补充:
1. 这一类 Wrap 模板是实时模板(Live Template),不是系统快捷键,靠缩写+Tab触发。
2. 查看/管理位置:Settings → Editor → Live Templates → Compose
3. 配套查看函数全部参数:
Windows: Alt + Enter → Show function parameters
Mac: Option + Enter
- 2 赞 · 1 评论
- #每天一个知识点#
jetpack compose的Column 列布局默认参数和使用Android studio快捷键
```kotlin
Column(
modifier: Modifier = Modifier,
verticalArrangement: Arrangement.Vertical = Arrangement.Top,
horizontalAlignment: Alignment.Horizontal = Alignment.Start,
content: @Composable ColumnScope.() -> Unit
)
```
快捷键:
Windows: Alt + Enter ,选择 Show function parameters,插入全部参数。
Mac: Option + Enter 。
默认效果:垂直方向从上排布,水平方向左对齐。不传参时,自动启用以上默认值。2 赞 · 1 评论 - #每天一个知识点#
Jetpack Compose无状态组件示例代码和解释
Jetpack Compose无状态组件不自带任何状态,状态由外部传入、事件回调向外抛出,UI只负责根据入参渲染,是可复用、易测试的纯UI单元,CMP跨平台组件优先推荐这种写法。
```kotlin
@Composable
fun CounterView(count: Int, onAddClick: () -> Unit) {
Column(horizontalAlignment = Alignment.CenterHorizontally) {
Text(text = "计数:$count", fontSize = 22.sp)
Button(onClick = onAddClick) { Text("点我+1") }
}
}
```
该组件内部没有remember、mutableStateOf,自身不保存数据。count作为只读入参,UI完全随传入值变化;点击动作不处理计数逻辑,仅回调onAddClick交给上层。上层可以是remember本地状态,也可以是ViewModel的StateFlow,组件本身和状态来源解耦。
无状态组件特点:输入相同参数,渲染结果一定相同,符合纯函数思想;方便预览、单元测试,多页面复用不会互相干扰。它只承担视图展示职责,状态和业务交由父层托管,和有状态组件搭配使用:上层做状态持有,下层大量封装无状态UI控件,这是Compose标准分层范式。相比内部带remember的有状态组件,无状态组件可控性更强,跨端维护成本更低。1 赞 · 0 评论