如何在自定义视图中使用行权重修饰符?

4

我正在尝试使用按钮制作一个屏幕键盘,但是使用按钮函数来完成这个任务有点麻烦,因为我无法像下面这样设置权重:

@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)
    }
}

如果有的话,我也非常希望能够提供像这样的屏幕键盘示例。

1个回答

6

Modifier.weight 可以在 Row 中使用,因为它是在 RowScope 上声明的。您可以在相同的作用域上声明您的组合项,以便可以使用 weight

@Composable
fun RowScope.MyKeyboardButton(text: String) {

请注意,这样一来您将无法在Row之外调用它。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接