前言
除了布局组件外,Jetpack Compose 还提供了一系列其他常用的 UI 组件。
https://developer.android.google.cn/jetpack/compose/components?hl=zh-cn
https://developer.android.google.cn/courses/pathways/compose?hl=zh-cn
占位
1 | Spacer(modifier = Modifier.height(16.dp)) |
分割线
1 | Divider( |
文本
Text(文本):
1 | Text("Hello, World!") |
文本居中
1 | Text( |
设置行数
1 | Text( |
按钮
基本使用
1 | Button( |
自定义按钮
效果
组件定义
1 | import androidx.compose.foundation.background |
使用
1 | Box( |
单选按钮
1 |
|
Switch
1 |
|
文本输入
BasicTextField
1 | BasicTextField( |
TextField
1 |
|
输入类型为密码
1 |
|
彩虹色文字
1 |
|
OutlinedTextField
1 |
|
图片
适配模式
1 | Image( |
contentScale:
ContentScale.Fit
等比缩放 保证图片完全显示 默认的方式ContentScale.Crop
等比缩放后居中剪裁ContentScale.Inside
等比缩放保证图片完全显示ContentScale.FillBounds
拉伸填充ContentScale.FillHeight
等比缩放 填充高度ContentScale.FillWidth
等比缩放 填充宽度ContentScale.None
不缩放后居中剪裁
着色
非透明的PNG图片的区域添加着色。
1 | Image( |
圆角
圆形
1 | Image( |
圆角
1 | Image( |
背景剪裁
图片的背景是不会被剪裁的,我们可以在外面套一个Box做剪裁。
1 | Box( |
加载本地图片
1 | Image( |
图片角标
1 | Image( |
加载网络图片
添加依赖
1 | implementation("io.coil-kt:coil-compose:2.6.0") |
添加网络权限
1 | <uses-permission android:name="android.permission.INTERNET" /> |
使用
1 |
|
调用
1 | LoadWebImage(url = "https://www.psvmc.cn/head.jpg") |
设置占位图
1 |
|
加载中动画
1 | CircularProgressIndicator(modifier = Modifier.size(30.dp)) |
消息框
Toast
组件化
1 | import android.annotation.SuppressLint |
调用
1 | var showToast by remember { mutableStateOf(false) } |
组件内方法
1 | val context = LocalContext.current |
Snackbar
基本示例
1 |
|
使用snackbarHost
1 | val scope = rememberCoroutineScope() |
对话框
1 | Dialog(onDismissRequest = { /* 关闭对话框事件 */ }) { |
隐藏键盘
1 | val keyboardController = LocalSoftwareKeyboardController.current |
加载网页
1 |
|
视频播放器
1 | import android.net.Uri |
实战-登录页面
1 |
|
调用
1 | LoginScreen { name, pwd -> |
组件提取
因为Compose组件本质都是方法,所以可以使用提取方法来提取组件
快捷键:Ctrl+Alt+M