【问题标题】:A trouble about Jetpack-Compose ColumnJetpack-Compose Column 的一个问题
【发布时间】:2020-01-07 02:35:41
【问题描述】:

无法成功运行,出现以下错误:

Cannot find a parameter with this name: crossAxisSize

我该如何解决?这是我的代码:

@Composable
fun NewsStory() {
    Column(
            crossAxisSize = LayoutSize.Expand,
            modifier=Spacing(16.dp)
    )
    {
        Text("demo")
        Text("try")
        Text("somethings")
    }
}

【问题讨论】:

标签: android kotlin android-jetpack-compose


【解决方案1】:

注意 - 请参阅下面的更新。

它在 FlexColumn 上可用。在 Column 中使用它,如下所示:

 @Preview
@Composable
fun NewsStory() {
    Column( modifier=Spacing(16.dp)) {
        FlexColumn(
            crossAxisSize = LayoutSize.Expand

        )
        {
            Text("demo")
            Text("try")
            Text("somethings")
        }
    }

}

我想这就是你想要的结果?

弹性列:

@Composable fun FlexColumn(
    modifier: Modifier = Modifier.None, 
    mainAxisAlignment: MainAxisAlignment = MainAxisAlignment.Start, 
    crossAxisAlignment: CrossAxisAlignment = CrossAxisAlignment.Start, 
    crossAxisSize: LayoutSize = LayoutSize.Wrap, 
    block: FlexChildren.() -> Unit
): Unit

link here

编辑 - 重要: 刚刚得知 Flex 即将被弃用。哦,使用 alpha 版本的乐趣(:所以正确的方法是使用 Column/Row 并将灵活修饰符应用于子项。保留此帖子而不是删除为有些人可能仍然想使用 FlexColumn/FlexRow,因为它们仍然是正式的。不要!

【讨论】:

    【解决方案2】:

    参数crossAxisSize 已从Column 可组合中删除,我认为支持使用修饰符。如果你想让Column 扩大到全尺寸,你可以添加Expanded 修饰符,那么你的代码就变成了这样:

    @Composable
    fun NewsStory() {
        Column(
                modifier=Expanded.wraps(Spacing(16.dp))      <<<------ the change
        )
        {
            Text("demo")
            Text("try")
            Text("somethings")
        }
    }
    

    交换两个修饰符不应产生不同的结果。如果您只想在一个方向上扩展,也可以使用ExpandedWidth 或ExpandedHeight(因为crossAxisSize 实际上只在FlexColumn 的情况下扩展宽度)。

    【讨论】:

    • 谢谢。 Column(modifier = ExpandedWidth){} 似乎是最直接的替代品
    猜你喜欢
    • 2022-11-04
    • 1970-01-01
    • 2021-06-29
    • 2021-10-13
    • 2022-10-23
    • 1970-01-01
    • 2021-10-13
    • 2022-06-20
    • 1970-01-01
    相关资源
    最近更新 更多