gpt4 book ai didi

android - ColumnScope 修饰符作为可组合的参数

转载 作者:行者123 更新时间:2023-12-04 23:41:38 25 4
gpt4 key购买 nike

我正在制作一个类似脚手架的可组合组件,其中包含可组合的文本。我希望脚手架具有文本的修饰符参数。我希望能够从 ColumnScope 传递一个修饰符,例如能够对齐文本。
这是脚手架的简化版本:

@Composable
fun MyScaffold(
text: String,
modifier: Modifier,
) {
Text(
modifier = modifier,
text = text
)
}
调用脚手架时,我想传递一个修饰符,以便文本水平对齐:
@Preview
@Composable
fun PreviewScaffold() {
MyScaffold(
text = "Hello",
modifier = Modifier.align(Alignment.CenterHorizontally)
)
}
但是,这不会编译,因为 align() 方法是 ColumnScope 中的扩展函数,因此它仅在 ColumnsScope 内时有效。
如何将 ColumnScope 修饰符作为 MyScaffold 的参数传递?
请注意,另一种方法是在脚手架中传递可组合的整个文本,而不仅仅是一个字符串,但我宁愿只使用一个字符串,这样我就可以在脚手架内进行大部分样式设置,但只需给外部调用者覆盖它的可能性。
谢谢!

最佳答案

1.0.0您可以使用所需的范围限定您的可组合:

@Composable
fun ColumnScope.MyScaffoldX(
text: String,
modifier: Modifier,
) {
Text(
modifier = modifier.align(Alignment.CenterHorizontally),
text = text
)
}
然后将其用于:
Column() {
MyScaffoldX(text = "Hello")
}
否则,您可以使用 Modifier可组合文件中的参数,如您的示例中所示:
@Composable
fun MyScaffold(
text: String,
modifier: Modifier,
) {
Text(
modifier = modifier,
text = text
)
}
使用它:
Column() {
MyScaffold(
text = "Hello",
modifier = Modifier.align(Alignment.CenterHorizontally)
)
}

关于android - ColumnScope 修饰符作为可组合的参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67208803/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com