【问题标题】:Create custom frame for image in android在android中为图像创建自定义框架
【发布时间】: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


    【解决方案1】:

    是的,您可以在顶部绘制 TextView,只需覆盖 onDraw() 方法,最后要绘制的项目将在顶部

    【讨论】:

    • 但我怎么知道 texview 是由 textview.layout(l,t,r,b) 绘制的。导致其视图组
    • 一般来说,我会在需要留出间隙的地方使用覆盖绘图底部的自定义 ImageView,然后使用约束布局添加带有背景的 TextView,仅此而已
    • 你将如何实现这个弯曲的白色背景?
    • 通过扩展 ImageView 并自定义它的形状,而不是在应该是弯曲的白色背景的地方绘制
    • 你的意思是你将跟踪 textview 的位置?
    猜你喜欢
    • 2012-04-14
    • 1970-01-01
    • 2019-05-15
    • 2012-06-02
    • 2020-05-01
    • 2011-03-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多