Как выделить текст в Jetpack Compose
У меня есть элемент Jetpack Compose Text(), который я хотел бы обвести белым цветом .
Кто-нибудь знает, как это сделать? Я пробовал использовать модификатор border (), но он просто добавляет рамку вокруг прямоугольной области, содержащей текст (снимок экрана) . Я также пробовал наложить два текстовых элемента, но это тоже не сработало.
2 ответа
Вы можете использовать
Canvas
и
drawIntoCanvas
функция.
Что-то вроде:
Canvas(
modifier = Modifier.fillMaxSize(),
onDraw = {
drawIntoCanvas {
it.nativeCanvas.drawText(
"Sample",
0f,
120.dp.toPx(),
textPaintStroke
)
it.nativeCanvas.drawText(
"Sample",
0f,
120.dp.toPx(),
textPaint
)
}
}
)
с этими
Paint
:
val textPaintStroke = Paint().asFrameworkPaint().apply {
isAntiAlias = true
style = android.graphics.Paint.Style.STROKE
textSize = 64f
color = android.graphics.Color.BLACK
strokeWidth = 12f
strokeMiter= 10f
strokeJoin = android.graphics.Paint.Join.ROUND
}
val textPaint = Paint().asFrameworkPaint().apply {
isAntiAlias = true
style = android.graphics.Paint.Style.FILL
textSize = 64f
color = android.graphics.Color.WHITE
}
// Creating a outline text
@Composable
fun OutLineText() {
// Create a Paint that has black stroke
val textPaintStroke = Paint().asFrameworkPaint().apply {
isAntiAlias = true
style = android.graphics.Paint.Style.STROKE
textSize = 100f
color = android.graphics.Color.CYAN
strokeWidth = 12f
strokeMiter = 10f
strokeJoin = android.graphics.Paint.Join.ROUND
}
// Create a Paint that has white fill
val textPaint = Paint().asFrameworkPaint().apply {
isAntiAlias = true
style = android.graphics.Paint.Style.FILL
textSize = 100f
color = android.graphics.Color.WHITE
}
// Create a canvas, draw the black stroke and
// override it with the white fill
Canvas(
modifier = Modifier.fillMaxSize(),
onDraw = {
drawIntoCanvas {
it.nativeCanvas.drawText(
"Hello World",
200f,
200.dp.toPx(),
textPaintStroke
)
it.nativeCanvas.drawText(
"Hello World",
200f,
200.dp.toPx(),
textPaint
)
}
}
)
}
Более подробная информация: https://gist.github.com/Oleur/ca70cd08f51568a0b870333c15ffbca3 https://developer.android.com/jetpack/compose/graphics/draw/overview https://developer.android.com/jetpack/compose/graphics /draw/модификаторы
Выход :