使用
Text
应用的 Shadow()
可组合项上的阴影效果看起来很棒,因为它与文本内容的形状对齐。当没有省略号时,这非常有效,允许阴影延伸到 Text
边界之外。但是,当文本太长并且出现省略号时,阴影会在边界内被剪切。我该如何解决这个问题?
@Preview(showBackground = true)
@Composable
fun Preview() {
MyApplicationTheme {
Box(
modifier = Modifier.size(100.dp),
contentAlignment = Alignment.Center
) {
Text(
text = "Hello ".repeat(1),
style = MaterialTheme.typography.bodyMedium.copy(
shadow = Shadow(
Color.Black,
blurRadius = 30f
)
),
modifier = Modifier
.width(100.dp),
fontSize = 12.sp,
overflow = TextOverflow.Ellipsis,
maxLines = 1
)
}
}
}
@Preview(showBackground = true)
@Composable
fun Preview() {
MyApplicationTheme {
Box(
modifier = Modifier.size(100.dp),
contentAlignment = Alignment.Center
) {
Text(
text = "Hello ".repeat(20),
style = MaterialTheme.typography.bodyMedium.copy(
shadow = Shadow(
Color.Black,
blurRadius = 30f
)
),
modifier = Modifier
.width(100.dp),
fontSize = 12.sp,
overflow = TextOverflow.Ellipsis,
maxLines = 1
)
}
}
}
我认为这没有问题。当您将
blurRadus
设置为较小的值并设置更明显的 color
时,您可以看到正确应用了 Shadow
,甚至适用于椭圆形。然而,这个阴影几乎看不见,因为三个小点的影响很小。
请参阅以下示例:
Text(
text = "Hello... ".repeat(5),
style = MaterialTheme.typography.bodyMedium.copy(
shadow = Shadow(
Color.Red,
blurRadius = 3f
)
),
modifier = Modifier
.width(100.dp),
fontSize = 12.sp,
overflow = TextOverflow.Ellipsis,
maxLines = 1
)
当您设置较高的
TextOverflow.Ellipsis
时,您观察到的阴影剪切与 blurRadius
值无关,因为 Shadow
可能不会超出 Text
可组合项的范围。