我怎樣才能在一行中用文本的基線來對齊一個影像。Modifier.alignByBaseline()對文本有效,但影像不參與對齊。
@Composable。
fun Sample() {
行(
modifier = Modifier.fillMaxWidth(),
horizontalArrangement = Arrangement.Center,
) {
文本(
text = "One"/span>,
modifier = Modifier.alignByBaseline(),
字體大小 = 40.sp
)
影像(
修改器 = 修改器
.padding(horizontal = 8.dp)
.size(24.dp)
.alignBy(FirstBaseline)。
painter = painterResource(id = R.drawable.ic_launcher_background),
contentDescription = ""。
)
文本(
text = "二"。
modifier = Modifier.alignByBaseline(),
fontSize = 40.sp
)
}
}
uj5u.com熱心網友回復:
alignByBaseline通過它自己的基線而不是鄰居的基線來對齊專案。
你可以對Text使用paddingFromBaseline,對影像padding使用verticalAlignment = Alignment.Bottom。
而要獲得基線偏移的實際值并將其傳遞給padding修改器,你需要等待TextLayoutResult:當根據文本大小、字體等計算文本布局時,它會被呼叫。
Row(
horizontalArrangement = Arrangement.Center,
verticalAlignment = Alignment.Bottom,
modifier = Modifier.fillMaxWidth()
) {
var maxBaseline by remember { mutableStateOf(0f) }
fun updateMaxBaseline(textLayoutResult: TextLayoutResult){
maxBaseline = max(maxBaseline, textLayoutResult.size.高度 - textLayoutResult.lastBaseline)
}
val topBaselinePadding = with(LocalDensity.current) { maxBaseline.toDp() }
文本(
text = "One",
modifier = Modifier.paddingFromBaseline(bottom = topBaselinePadding),
fontSize = 20.sp,
onTextLayout = ::updateMaxBaseline
)
影像(
painter = painterResource(id = R.drawable.ic_launcher_background)。
contentDescription = ""。
修改器 = 修改器
.padding(bottom = topBaselinePadding)
.size(24.dp)
)
文本(
text = "two",
modifier = Modifier.paddingFromBaseline(bottom = topBaselinePadding),
fontSize = 40.sp,
onTextLayout = ::updateMaxBaseline
)
}

轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/313085.html
標籤:
上一篇:ImageView不能保持回應

