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
相关产品推荐
相关产品推荐

