【问题标题】:Give circular background to textview using Canvas使用 Canvas 为 textview 提供圆形背景
【发布时间】:2020-10-28 16:42:33
【问题描述】:

我想用画布上的圆角边框绘制textView。所以下面的代码工作正常。但是圆需要 15.0f 从 yPosCenter 中减去

如何在 Canvas 中完美地为 textView 提供 圆形背景 。就我而言,我必须使用硬编码图 15.0f

                val verticalOffset = dayVerticalOffsets[day.indexOnMonthView]
                val xPos = x * dayWidth + horizontalOffset
                val yPos = y * dayHeight + verticalOffset
                val xPosCenter = xPos + dayWidth / 2
                val yPosCenter = yPos + dayHeight / 2


                //subtract 15.0f to adjust it to center - > How could I achieve it 
                //val subtractVal = yPosCenter - (paint.descent() + paint.ascent())// / 2
                canvas.drawCircle(xPosCenter,yPosCenter - 15.0f,paint.textSize * 0.85f , getCounterColor(day))
                canvas.drawText("15",xPosCenter,yPosCenter,getTextPaint(day))

我错过了什么。

【问题讨论】:

    标签: android canvas android-custom-view ondraw


    【解决方案1】:

    我认为您缺少的只是文本不会以yPosCenter 为中心垂直绘制:

    // Outside draw function
    private val textBounds = Rect()
    ...
    
    val text = "15"
    
    // Find the center of the text vertically
    val textVerticalCenter = paint.getTextBounds(text, 0, text.length(), textBounds).exactCenterY()
    canvas.drawText(text, xPosCenter, yPosCenter - textVerticalCenter, paint)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-10-31
      • 2018-01-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多