如何使一个文本的宽度等于另一个隐式测量的文本的宽度?

Fis*_*awk 4 android-jetpack-compose

有一个阅读器应用程序有两个文本,一个用于总页数,一个用于当前页面。我希望当前页面文本的宽度等于总页面文本的宽度,但是总页面文本的宽度是隐式测量的。

\n

目前,我只能像这样指定宽度\xef\xbc\x9a

\n
Row {\n    Text(modifier = Modifier.width(32.dp), text = "1000") // total page\n    Slider(...)\n    Text(modifier = Modifier.width(32.dp), text = "1") // current page\n}\n
Run Code Online (Sandbox Code Playgroud)\n

Phi*_*hov 5

要获得渲染文本布局,您可以使用onTextLayout. 它包含您可能需要的所有信息,包括尺寸。

然后你可以将此大小传递给第二个Text修饰符:

var totalPageTextWidth by remember { mutableStateOf<Int?>(null) }
val widthModifier = totalPageTextWidth?.let { width ->
    with(LocalDensity.current) { 
        Modifier.width(width.toDp()) 
    }
} ?: Modifier
Text(
    text = "1000",
    onTextLayout = { totalPageTextWidth = it.size.width }
)
Text(
    text = "1",
    modifier = widthModifier
)
Run Code Online (Sandbox Code Playgroud)