为什么从顶部填充根据元素的对齐方式获得不同的长度值?

why padding from top gets different length value based on element's alignment?

假设我有两个场景有分隔符,从顶部填充。

第一个场景(Aligment.TopCenter);

Box(
                    modifier = Modifier.fillMaxSize(),
                    contentAlignment = Alignment.TopCenter
                ) {
                    Divider(
                        thickness = 3.dp,
                        color = Color.Red)
                    Divider(
                        modifier = Modifier.padding(top = 200.dp),
                        thickness = 3.dp,
                        color = Color.Black)
                }

屏幕:

第二种情况(Aligment.Center);

Box(
                    modifier = Modifier.fillMaxSize(),
                    contentAlignment = Alignment.Center
                ) {
                    Divider(
                        thickness = 3.dp,
                        color = Color.Red)

                    Divider(
                        modifier = Modifier.padding(top = 200.dp),
                        thickness = 3.dp,
                        color = Color.Black)
                }
            }

屏幕:

问题是:为什么 a 不等于 b,即使它们具有相同的填充?

Modifier.padding 增加视图的大小。当它放在 Box 的中心时,看起来只应用了一半的填充,但视图的另一半位于屏幕的上半部分。

您可以添加边框以查看此处的实际情况:

Box(
    modifier = Modifier.fillMaxSize(),
    contentAlignment = Alignment.Center
) {
    Divider(
        thickness = 3.dp,
        color = Color.Red)

    Divider(
        modifier = Modifier.border(2.dp, color = Color.Green).padding(top = 200.dp),
        thickness = 3.dp,
        color = Color.Black)
}

您可以使用 Modifier.offset 来获得您期望的结果