如何在自定义视图中使用行宽修饰符?
How to use Row weight modifier in a custom view?
我正在尝试通过按钮制作屏幕键盘,但尝试使用按钮功能来实现这一点有点烦人,因为我无法像这样设置权重:
@Composable
fun MyKeyboardButton(text: String){
Button(onClick = { /*TODO*/ }, modifier = Modifier.weight(1F)) {
Text(text = text, textAlign = TextAlign.Center)
}
}
然后将其插入到键盘上每个字母的行中..相反,我坚持这样做:
Row(modifier = Modifier.fillMaxWidth(), horizontalArrangement = Arrangement.spacedBy(4.dp)) {
Button(onClick = { /*TODO*/ }, Modifier.weight(1F)) {
Text(text = "Q")
}
Button(onClick = { /*TODO*/ }, Modifier.weight(1F)) {
Text(text = "W")
为了获得均匀的间距,对于 28 个按钮,代码中的每个小改动都需要实现。
有没有办法通过函数添加按钮?还是我需要像这样为每个按钮设置一个按钮宽度:
@Composable
fun MyKeyboardButton(text: String, width: Int){
Button(onClick = { /*TODO*/ }, modifier = Modifier.width(width.dp) {
Text(text = text, textAlign = TextAlign.Center)
}
}
如果有这样的屏幕键盘示例,我也非常感谢..
Modifier.weight
在 Row
中可用,因为它是在 RowScope
上声明的。您可以在同一范围内声明您的可组合项,这样您就可以使用 weight
:
@Composable
fun RowScope.MyKeyboardButton(text: String) {
请注意,您将无法在 Row
之外调用它。
我正在尝试通过按钮制作屏幕键盘,但尝试使用按钮功能来实现这一点有点烦人,因为我无法像这样设置权重:
@Composable
fun MyKeyboardButton(text: String){
Button(onClick = { /*TODO*/ }, modifier = Modifier.weight(1F)) {
Text(text = text, textAlign = TextAlign.Center)
}
}
然后将其插入到键盘上每个字母的行中..相反,我坚持这样做:
Row(modifier = Modifier.fillMaxWidth(), horizontalArrangement = Arrangement.spacedBy(4.dp)) {
Button(onClick = { /*TODO*/ }, Modifier.weight(1F)) {
Text(text = "Q")
}
Button(onClick = { /*TODO*/ }, Modifier.weight(1F)) {
Text(text = "W")
为了获得均匀的间距,对于 28 个按钮,代码中的每个小改动都需要实现。
有没有办法通过函数添加按钮?还是我需要像这样为每个按钮设置一个按钮宽度:
@Composable
fun MyKeyboardButton(text: String, width: Int){
Button(onClick = { /*TODO*/ }, modifier = Modifier.width(width.dp) {
Text(text = text, textAlign = TextAlign.Center)
}
}
如果有这样的屏幕键盘示例,我也非常感谢..
Modifier.weight
在 Row
中可用,因为它是在 RowScope
上声明的。您可以在同一范围内声明您的可组合项,这样您就可以使用 weight
:
@Composable
fun RowScope.MyKeyboardButton(text: String) {
请注意,您将无法在 Row
之外调用它。