我正在尝试使用 Jetpack Compose 来混淆一些文本。显然,如果您使用的是 Android 12,则 blur
修饰符对于此用例会产生奇迹。
对于运行较低 API 版本的设备,我的替代方案是简单地在文本上绘制一个黑色的矩形。我认为使用 graphicsLayer
或 drawBehind
等现有修饰符会相对容易,但我一直无法弄清楚,而且我现在没有想法...
我当前的文本可组合项如下所示:
Text(
modifier = if (blurText) {
Modifier.blur(16.dp, BlurredEdgeTreatment.Unbounded)
} else {
Modifier
},
text = textToObfuscate,
fontFamily = latoFontFamily,
fontWeight = FontWeight.W700,
fontSize = 16.sp,
color = black,
)
我可以将文本包装在一个框中,并在其中放置另一个框来绘制文本,但这似乎毫无用处,而且比必要的工作量更多。
如果有人对如何仅使用修饰符扩展来实现这一目标有任何想法,那就太棒了!
最佳答案
您可以使用Modifier.drawWithContent
作为
Text(
modifier = if (blurText) {
Modifier.blur(16.dp, BlurredEdgeTreatment.Unbounded)
} else {
Modifier.drawWithContent {
drawContent()
drawRect(Color.Black)
}
},
text = "textToObfuscate",
fontWeight = FontWeight.W700,
fontSize = 16.sp,
)
关于text - 在 Jetpack Compose 中使用修改器在文本上绘制形状,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71857687/