如何在自定义视图中使用行重修改器?

2024-04-07

我正在尝试通过按钮制作屏幕键盘,并尝试使用按钮功能来执行此操作有点烦人,因为我无法设置这样的权重:

@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.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在自定义视图中使用行重修改器? 的相关文章