我有一行有两个文本项。一个文本比另一个文本长(我不知道是哪一个)。如何创建一行,使这两个文本项具有相同的宽度?我还需要整行具有最小宽度,所以我不能简单地使用Modifier.weight()来处理文本项,因为在这种情况下,行被扩展到最大可用宽度。这里有一个例子。文本“字符搜索”较长,但我希望两个文本项具有相同的宽度。
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) ) }
当我在我的项目中这样做的时候,重新组合发生得如此之快,以至于所有的尺寸都调整了这么多(小心,如果你有一个复杂的结构,有大量如此可调的元素,这个问题可能仍然会浮出水面,但对于这个来说,一个双按钮就可以了)
1条答案
按热度按时间g2ieeal71#
我不知道是否存在预先制作的修改器,我的可靠解决方案是计算最大最小宽度,并在重组时将其分配给两个项目。
当我在我的项目中这样做的时候,重新组合发生得如此之快,以至于所有的尺寸都调整了这么多(小心,如果你有一个复杂的结构,有大量如此可调的元素,这个问题可能仍然会浮出水面,但对于这个来说,一个双按钮就可以了)