android 如何在Jetpack撰写中为文本添加轮廓

jogvjijk  于 2022-12-02  发布在  Android
关注(0)|答案(1)|浏览(165)

我有一个Jetpack Compose Text()元素,我想用黑色来概括它,如


有人知道怎么做吗?我试过使用border()修饰符,但那只是在包含文本的矩形区域周围添加了一个边框。我也试过覆盖两个文本元素,但那也不太起作用。

kcwpcxri

kcwpcxri1#

1.4.0-alpha01TextStyle函数中引入了一个DrawStyle参数,用于绘制带轮廓的文本。
您可以使用类似于以下内容的内容:

Text(
    text = "Sample",
    style = TextStyle.Default.copy(
        fontSize = 64.sp,
        drawStyle = Stroke(
            miter = 10f,
            width = 5f,
            join = StrokeJoin.Round
        )
    )
)

1.4.0-alpha01之前,您可以使用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
}

相关问题