如何解决撰写互操作错误? AndroidView 不会在 Android 25 及更低版本上重绘
我尝试使用 Compose 实现一个屏幕,但我有一个自定义的 Android 视图,目前还不想在 Compose 中重新实现。把它想象成一个棋盘(但它是用于围棋游戏的)。我有以下代码:
val context = AmbientContext.current
val boardView = remember {
BoardView(context).apply {
onTapMove = { listener(BoardCellHovered(it)) }
onTapUp = { listener(BoardCellTapped(it)) }
drawCoordinates = true
drawMarks = true
drawLastMove = true
}
}
AndroidView({ boardView },modifier = Modifier
.padding(12.dp)
.shadow(6.dp,MaterialTheme.shapes.large)
) { view ->
view.apply {
boardSize = state.position?.boardSize ?: 9
position = state.position
isInteractive = state.boardInteractive
showCandidateMove(state.hoveredCell,StoneType.BLACK)
}
}
最后一行触发无效。这在 Android 29 上运行良好,但如果我在 Android 25(或更低版本)模拟器中尝试,视图将被绘制 ONCE 然后永远不会被重绘,即使更新块确实被调用。
完整代码可在 https://github.com/acristescu/OnlineGo/blob/9630a61a00e84c5a455bf230c406b1914da4c9b5/app/src/main/java/io/zenandroid/onlinego/ui/screens/tutorial/TutorialFragment.kt
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。