You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android Compose:如何不使用Modifier.weight()适配两个自定义Composable?

解决方案

方法一:使用Modifier.weight(1f)(推荐)

无需手动设置固定比例,只需给ComposableOne添加weight(1f),让它自动占据Row中除ComposableTwo固定尺寸外的所有剩余空间,代码如下:

Row(Modifier.fillMaxWidth()) {
    ComposableOne(Modifier.weight(1f))
    ComposableTwo()
}

这样不管屏幕尺寸如何,ComposableTwo都会固定显示在右侧,ComposableOne自动填满左侧剩余区域,不会出现空隙。你之前遇到的适配问题是因为设置了固定权重比例(比如0.8/0.2),改用weight(1f)就可以避免这个问题。

方法二:使用ConstraintLayout

如果不想用weight,可以用ConstraintLayout来约束布局关系,让ComposableOne填充到ComposableTwo的左侧:

ConstraintLayout(Modifier.fillMaxWidth()) {
    val (composableOne, composableTwo) = createRefs()

    ComposableOne(
        Modifier.constrainAs(composableOne) {
            start.linkTo(parent.start)
            top.linkTo(parent.top)
            bottom.linkTo(parent.bottom)
            end.linkTo(composableTwo.start)
            width = Dimension.fillToConstraints
        }
    )

    ComposableTwo(
        Modifier.constrainAs(composableTwo) {
            end.linkTo(parent.end)
            top.linkTo(parent.top)
            bottom.linkTo(parent.bottom)
        }
    )
}

内容的提问来源于stack exchange,提问作者Jcole

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 00:27:10