ViewOutlineProvider не работает с путем - PullRequest
0 голосов
/ 28 мая 2020

Я хочу установить закругленный угол для просмотра с контуром, например,

fun View.setRoundedCorners(radiusTopLeft: Float,
                           radiusTopRight: Float,
                           radiusBottomRight: Float,
                           radiusBottomLeft: Float) {
    outlineProvider = object : ViewOutlineProvider() {
        private val path = Path()
        private val rect = RectF()
        private val radii = floatArrayOf(
                radiusTopLeft,
                radiusTopLeft,
                radiusTopRight,
                radiusTopRight,
                radiusBottomRight,
                radiusBottomRight,
                radiusBottomLeft,
                radiusBottomLeft)

        override fun getOutline(view: View, outline: Outline) {
            rect.set(0F, 0F, view.width.toFloat(), view.height.toFloat())
            path.addRoundRect(rect, radii, Path.Direction.CW)
            outline.setConvexPath(path)
        }
    }
    clipToOutline = true
}

Но этот код не действует. Я не знаю, как это исправить.
outline.setRoundRect() - работает, как ожидалось, но мне нужно установить радиус для каждого угла независимо

1 Ответ

0 голосов
/ 28 мая 2020

потому что

/**
 * Returns whether the outline can be used to clip a View.
 * <p>
 * Currently, only Outlines that can be represented as a rectangle, circle,
 * or round rect support clipping.
 *
 * @see android.view.View#setClipToOutline(boolean)
 */
public boolean canClip() {
    return mMode != MODE_CONVEX_PATH;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...