相关疑难解决方法(0)

如何使用“weight”修饰符创建可组合函数?

当我有

Column {
    Button(onClick = { /*TODO*/ },) {
        Text("Original Window")
    }
    Button(onClick = { /*TODO*/ }) {
        Text("Fit System Window")
    }
}
Run Code Online (Sandbox Code Playgroud)

我可以创建一个通用的可组合函数

@Composable
fun MyButton(
    onClick: () -> Unit,
    content: @Composable RowScope.() -> Unit
) {
    Button(
        onClick = onClick,
        content = content
    )
}

Column {
    MyButton(onClick = { /*TODO*/ },) {
        Text("Original Window")
    }
    MyButton(onClick = { /*TODO*/ }) {
        Text("Fit System Window")
    }
}
Run Code Online (Sandbox Code Playgroud)

然而当我有

Column {
    Button(onClick = { /*TODO*/ },
        modifier = Modifier.weight(1f)) …
Run Code Online (Sandbox Code Playgroud)

android android-jetpack-compose

20
推荐指数
1
解决办法
2791
查看次数

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

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

@Composable
fun MyKeyboardButton(text: String){
Button(onClick = { /*TODO*/ }, modifier = Modifier.weight(1F)) {
    Text(text = text, textAlign = TextAlign.Center)
    }
}
Run Code Online (Sandbox Code Playgroud)

然后将其插入键盘上每个字母的一行中。相反,我坚持这样做:

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")
Run Code Online (Sandbox Code Playgroud)

为了获得均匀的间距,对于代码中的每个微小更改都需要针对28 个按钮实现。

有没有办法通过函数添加按钮?或者我是否需要为每个按钮设置一个宽度,如下所示:

@Composable
fun MyKeyboardButton(text: String, width: Int){
Button(onClick = { /*TODO*/ }, modifier = Modifier.width(width.dp) {
Text(text = text, textAlign = TextAlign.Center)
    }
}
Run Code Online (Sandbox Code Playgroud)

如果有的话,我也非常感谢这样的屏幕键盘示例。

android kotlin android-jetpack-compose

4
推荐指数
1
解决办法
907
查看次数

标签 统计

android ×2

android-jetpack-compose ×2

kotlin ×1