【发布时间】:2019-11-19 21:58:23
【问题描述】:
我有一张卡片清单。这些卡片包含图像。所以我必须为带有底部信息块的图像创建一个自定义框架。
它必须是可定制的,因为我多次使用它的差异版本。
我尝试使用 ImageView、一个 TextView 和一个带角半径的 Path 创建一个自定义视图组,但这很难,因为我无法在 ImageView 顶部的路径上绘制 TextView。
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)
}
我需要达到的目标:
【问题讨论】:
标签: android android-layout kotlin android-imageview android-custom-view