Создать пользовательский кадр для изображения в Android - PullRequest
1 голос
/ 10 июля 2019

У меня есть список карт.Эти карты содержат изображения.Поэтому мне нужно создать пользовательский фрейм для изображения с нижним информационным блоком.

Он должен быть настраиваемым, потому что я несколько раз использую его diff-версию.

Я пытался создатьПользовательская группа представлений с ImageView, одним TextView и одним Path с угловым радиусом, но это сложно, потому что я не могу нарисовать TextView поверх пути, который находится над ImageView.

 override fun onLayout(changed: Boolean, left: Int, top: Int, right: Int, bottom: Int) {

    imageView.layout(
        left,
        top,
        right,
        bottom - 50
    )

    textView.layout(
        500, 700,
        600,
        800
    )
}

override fun dispatchDraw(canvas: Canvas?) {
    super.dispatchDraw(canvas)
    canvas!!.drawPath(mBottomShape, mBottomShapePaint)
}

override fun onMeasure(widthMeasureSpec: Int, heightMeasureSpec: Int) {
    viewWidth = MeasureSpec.getSize(widthMeasureSpec)
    viewHeight = MeasureSpec.getSize(heightMeasureSpec)

    val bottom = viewHeight - 50

    mBottomShape.moveTo(viewWidth * 0.47F, bottom.toFloat() * 1.01f)
    mBottomShape.lineTo(viewWidth * 0.53F, bottom * 0.99F)
    mBottomShape.lineTo(viewWidth * 0.55F, bottom * 0.93F)
    mBottomShape.lineTo(viewWidth * 0.7F, bottom * 0.93F)
    mBottomShape.lineTo(viewWidth * 0.72F, bottom * 0.99F)
    mBottomShape.lineTo(viewWidth * 0.78F, bottom.toFloat() * 1.01f)

    mBottomShape.close()

    setMeasuredDimension(viewWidth, viewHeight)
}

Что мне нужнодостичь:

enter image description here

1 Ответ

0 голосов
/ 10 июля 2019

Да, вы можете нарисовать TextView сверху, просто переопределить onDraw() метод и последние элементы, которые вы рисуете, будут сверху

...