【问题标题】:How to show ellipsis (three dots) at the end of a Text line in Android Jetpack Compose?如何在 Android Jetpack Compose 的文本行末尾显示省略号(三个点)?
【发布时间】:2021-01-15 12:45:50
【问题描述】:
【问题讨论】:
标签:
android
android-jetpack
android-jetpack-compose
【解决方案1】:
BasicText 和 Text 都有 overflow 和 maxLines 参数可以帮助您。
Text(myText, maxLines = 1, overflow = TextOverflow.Ellipsis)
这是一个完整的单行示例:
import androidx.compose.material.Text
import androidx.compose.ui.text.style.TextOverflow
@Composable
fun EllipsisExample() {
Box(modifier = Modifier.width(160.dp)) {
Text(
text = "Lorem ipsum dolor sit amet.",
maxLines = 1,
overflow = TextOverflow.Ellipsis
)
}
}
当然,您可以调整maxLines 以满足您的需求:
Text(
text = "Lorem ipsum dolor sit amet, consectetur adipiscing elit.",
maxLines = 2,
overflow = TextOverflow.Ellipsis
)
【解决方案2】:
您可以将Text中的overflow属性设置为TextOverflow.Ellipsis
例如:
Text(
text = "Compose Previews are great to check quickly how a composable layout looks like",
maxLines = 2,
overflow = TextOverflow.Ellipsis
)
如果您想使省略号动态化,您应该使用 Compose 的状态 API,例如 remember 和 mutableStateOf,因此对状态的任何更改都会自动更新 UI
@Composable
fun MessageCard(msg: String) {
var isExpanded by remember { mutableStateOf(false) }
Text(
text = msg,
modifier = Modifier.padding(all = 4.dp),
style = MaterialTheme.typography.body2,
maxLines = if (isExpanded) Int.MAX_VALUE else 1,
overflow = if (isExpanded) TextOverflow.Visible else TextOverflow.Ellipsis
)
}