在Jetpack Compose中构建一个简单的键盘非常简单和直接。
编辑:工作示例:https://github.com/THEAccess/compose-keyboard-ime
我使用以下方法构建了一个非常简单的KeyRow:
Key.kt
@Composable
fun Key(modifier: Modifier = Modifier, label: String, onClick: () -> Unit) {
val shape = RoundedCornerShape(4.dp)
//TODO: make clickable outside but don't show ripple
Box(modifier = modifier
.padding(2.dp)
.clip(shape)
.clickable(onClick = onClick)
.background(Color.White)
.padding(vertical = 12.dp, horizontal = 4.dp), contentAlignment = Alignment.Center) {
Text(text = label, fontSize = 20.sp)
}
}
KeyRow.kt
@Composable
fun KeyRow(keys: List<String>) {
Row(modifier = Modifier.fillMaxWidth().background(color = grey200)) {
keys.forEach {
Key(modifier = Modifier.weight(1f), label = it, onClick = { })
}
}
}
这就是它的样子:
我想实现这个动画:
然而,我目前卡在这里了
![4]
层次结构
-Keyboard
--KeyRow
---KeyLayout
----Key
----KeyPressedOverlay (only visible when pressed)
我的主要问题是我不知道如何显示KeyPressedOverlay Composale(它比Key Composable更大)而不使父布局变大。因此,我需要以某种方式溢出父布局。