text - 在 Jetpack Compose 中使用修改器在文本上绘制形状

标签 text android-jetpack-compose draw blur

我正在尝试使用 Jetpack Compose 来混淆一些文本。显然,如果您使用的是 Android 12,则 blur 修饰符对于此用例会产生奇迹。

对于运行较低 API 版本的设备,我的替代方案是简单地在文本上绘制一个黑色的矩形。我认为使用 graphicsLayerdrawBehind 等现有修饰符会相对容易,但我一直无法弄清楚,而且我现在没有想法...

我当前的文本可组合项如下所示:

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/

相关文章:

java - 在Java中绘制段落时更改字体

c++ - UTF-8 字符的 putText (C++)

text - XQuery 数据和 text() 函数

android - 如何在 Jetpack Compose 中移动 slider 时消除拖动效果

android - 如何创建代码输入输入样式 jetpack compose

iphone - 我们如何为 GLFloat 赋值以在 iPhone 应用程序中画一条线?

javascript - 我如何绘制带有循环和点的完美倍数线螺旋?

python - selenium python xpath 在页面上找不到元素文本()

android - 当行宽等于 TextView 的宽度时,为什么 TextView 会断行

android - 通过撰写导航传递 Parcelable 参数