android - Jetpack Compose 卡上的事件处理
问题描述
我有一个音乐播放器应用程序 - 在我的屏幕上,我有显示有关曲目信息的卡片。当我点击一张卡片时,播放器应该播放它的曲目。
@Composable
fun TrackCard(track: Track) {
Card(
modifier = Modifier.padding(5.dp).fillMaxWidth(),
contentColor = Color.Black
) {
Column(modifier = Modifier.padding(10.dp)) {
ArtistName(text = track.artist.name)
Headline(text = track.title)
AlbumName(text = track.album.title)
}
}
}
我尝试Clickable
在其上添加一个Modifier
这样的:clickable(onClick = {})
为了让曲目播放,我需要另一个用于我的 TrackCard 的参数,即播放器本身。由于我想将 UI 代码分开,我想知道是否可以添加一个事件侦听器并从那里访问播放曲目?(我也想捕捉不同类型的事件,如长按触摸等,以进行不同的事件处理)
跟踪卡的初始化如下:
@Composable
private fun ResultList(model: PlayerModel) {
with(model) {
LazyColumn(state = rememberLazyListState()) {
items(tracks) {
TrackCard(it)
}
}
}
}
}
我将如何做到这一点?
解决方案
您可以像这样向卡片添加点击事件。将您想要包含的点击代码放入可点击函数中
Card(
modifier = Modifier.padding(5.dp).fillMaxWidth().clickable{ },
contentColor = Color.Black
)
推荐阅读
- amazon-web-services - 将 AWS Lightsail SSH 添加到 Bitbucket SSH 以允许访问克隆存储库
- r - 按绘图顺序排列堆积条形图
- javascript - 无法在另一个函数中访问间隔
- python - cx_Oracle 给出 ORA-01031 权限不足 以 SYSDBA 身份登录
- python - 我已经使用命令 pip 安装了 opencv-python,但是在 aws 上执行 import cv2 时遇到 importError
- laravel - 在 Laravel Gate 中获取用户 ID
- firebase - Flutter 应用程序使用 Shopify App Counterpart 将图像上传到 Firebase 存储 - 图像:媒体处理失败
- javascript - 子进程 spawn 在 Electron 中产生 TypeError "stdout.on is not a function"
- c# - 在 Unity 3D 中穿过立方体后如何更改球体的颜色?
- php - 如何测试与微服务通信的控制器?