对于背景元素,我尝试简单地绘制一个非常大的填充圆,该圆被偏移,以便只有一部分显示在底部。我已经让它工作来显示一个偏移的圆,但它似乎只允许父视图的最大宽度/高度,而不是圆的完整大小。
例如,我有下面的代码,它显示了一个圆圈,但将大小更改为1000,我认为应该使它更大,更好地跨越屏幕底部(需要这与我们的设计相匹配),但它没有;它保留了大小:
Canvas(modifier = Modifier
.size(516.dp)
.offset(x = (-190).dp, y = (200).dp)
.align(alignment = Alignment.BottomStart),
onDraw = {
drawCircle(color = Color.DarkGray)
}
)
一旦我达到400 dp左右(这是我的屏幕宽度),它根本不会得到更大,当我进一步增加。有没有一种方法可以告诉它忽略父视图的大小,而只是跨越我告诉它的大小?
1条答案
按热度按时间nuypyhwy1#
首先,如果不使用
requiredX
或wrapContentX
参数,就无法在Column、Row、Box等可组合对象中度量大小大于parnet的Composable。这就是为什么你不能创建一个宽度为516.dp的Composable,而父Composable的宽度为400.dp。下面的代码不会让BoxWithConstraints中的Box为150.dp,而父级的大小为100.dp。
您可以查看this answer以了解更多详细信息。
第二,你的画布不需要有一个大小修饰符来绘制里面的任何东西,除非你需要
size
或center
参数。在jetpack Compose中,您可以绘制Composable之外的任何内容,除非您剪辑Composable。我在这里发布了有关画布大小修改器的内容如何使用IntrinsicSize.Min与画布在喷气背包组成
无论画布大小如何,使用设置的任何半径在画布内绘制都将绘制它