我有一行,其中有一个文本模块,后面跟着一个图像模块。如果文本很长,它会挤掉图像。但如果我给文本加权,这个问题就解决了,但文本块会占用可用空间,而不是换行,而这正是我想要的。
使用以下代码,包括文本上的 Weight Modifier,它解决了图像被推开的问题。但如果标题很短,则文本不会换行,如下所示: 带权重,长标题 带权重,短标题
但是,如果不使用 Weight,我会得到我想要的文本换行,但如果标题很长,我会丢失此处显示的图像: 无权重,长标题 无权重,短标题
我如何保护图像并保持文本换行?
@Composable
fun TitleAndChevron() {
Row(
verticalAlignment = Alignment.CenterVertically,
modifier = Modifier
.padding(8.dp)
.background(color = Color.Black)
.wrapContentWidth(align = Alignment.Start),
) {
Text(
text = "The Englishman Who Went Up a Hill But Came Down a Mountain",
color = Color.White,
maxLines = 1,
overflow = TextOverflow.Ellipsis,
style = MaterialTheme.typography.titleLarge,
modifier = Modifier
.padding(8.dp)
.weight(1f)
)
Image(
painter = painterResource(id = R.drawable.ic_chevron),
contentDescription = null,
modifier = Modifier
.padding(start = 8.dp, end = 8.dp)
.size(12.dp),
)
}
}
该
weight
修饰符有第二个参数叫做fill
,默认值为true
,这意味着默认情况下元素会填充整个宽度,但是如果您使用 ,false
则它只占用所需的宽度,这正是您想要的。