android Jetpack组成:行项宽度相同,整个行的宽度最小

u1ehiz5o  于 2023-01-24  发布在  Android
关注(0)|答案(1)|浏览(101)

我有一行有两个文本项。一个文本比另一个文本长(我不知道是哪一个)。如何创建一行,使这两个文本项具有相同的宽度?我还需要整行具有最小宽度,所以我不能简单地使用Modifier.weight()来处理文本项,因为在这种情况下,行被扩展到最大可用宽度。
这里有一个例子。文本“字符搜索”较长,但我希望两个文本项具有相同的宽度。

g2ieeal7

g2ieeal71#

我不知道是否存在预先制作的修改器,我的可靠解决方案是计算最大最小宽度,并在重组时将其分配给两个项目。

var item1WidthPx by remember { mutableStateOf(0) }
var item2WidthPx by remember { mutableStateOf(0) }
val maxItemWidth = max(item1WidthPx, item2WidthPx)
    .let { with(LocalDensity.current) { it.toDp() } }

Row(modifier = Modifer.wrapContentWidth()) {
    Item1(
        modifier = Modifier
            .onPlaced { item1WidthPx = it.size.width }
            .widthIn(min = maxItemWidth)
    )
    Item2(
        modifier = Modifier
            .onPlaced { item2WidthPx = it.size.width }
            .widthIn(min = maxItemWidth)
    )
}

当我在我的项目中这样做的时候,重新组合发生得如此之快,以至于所有的尺寸都调整了这么多(小心,如果你有一个复杂的结构,有大量如此可调的元素,这个问题可能仍然会浮出水面,但对于这个来说,一个双按钮就可以了)

相关问题