Ich versuche, einen Text mit Jetpack Compose zu verschleiern. Offensichtlich blur
wirkt der Modifikator für diesen Anwendungsfall Wunder, wenn Sie Android 12 haben.
Meine Alternative für Geräte mit einer niedrigeren API-Version wäre, einfach ein Rechteck mit schwarzer Farbe über den Text zu ziehen. graphicsLayer
Ich nahm an, dass dies mit vorhandenen Modifikatoren wie oder relativ einfach wäre, drawBehind
aber ich konnte es nicht herausfinden und mir fehlen im Moment die Ideen...
Mein aktueller zusammensetzbarer Text sieht so aus:
Text(
modifier = if (blurText) {
Modifier.blur(16.dp, BlurredEdgeTreatment.Unbounded)
} else {
Modifier
},
text = textToObfuscate,
fontFamily = latoFontFamily,
fontWeight = FontWeight.W700,
fontSize = 16.sp,
color = black,
)
Ich könnte den Text in eine Box packen und eine weitere Box darin haben, um über den Text zu zeichnen, aber das scheint einfach nutzlos und mehr Arbeit zu sein, als notwendig sein sollte.
Wenn jemand eine Idee hat, wie man dies einfach mit einer Modifier-Erweiterung erreichen kann, wäre das großartig!
Lösung des Problems
You can use Modifier.drawWithContent
as
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,
)
Keine Kommentare:
Kommentar veröffentlichen