是否可以在画布上的drawtext上添加光标?

时间:2016-11-29 14:26:27

标签: android canvas drawtext

我的代码在这里

textPaint.setStyle(Paint.Style.FILL);
textPaint.setTextAlign(Paint.Align.CENTER);
canvas.drawText(substring, textX, y, this.textPaint);

我想在这里添加游标,如edittext

2 个答案:

答案 0 :(得分:0)

不,据我所知,这是不可能的,因为文本是位图的一部分,而不是由文本标记界面解释为文本。

我建议另一个解决方案:

  1. 使用像这样的封装布局结构(布局只是简单!)

    pong = new Pong()
  2. 您可以通过调用 setX setY 功能将textview定位在framelayout中。然后,只要在画布之后定义textview,就会始终在画布上绘制textview。此外,您可以通过调用函数 setVisibility

  3. 使代码可见/不可见
  4. 除此之外,您还可以使用代码动态地向framelayout添加更多Textview,而不是在布局xml中静态定义textview

答案 1 :(得分:0)

你可以这样画出闪烁的光标:

private long lastCursorChangeState = -1;
private boolean cursorVisible = true;
private Rect textBounds = new Rect();

@Override
protected void onDraw(Canvas canvas) {  
    if(isWriting){
        if(System.currentTimeMillis() - lastCursorChangeState > 500) {
            cursorVisible = !cursorVisible;
            lastCursorChangeState = System.currentTimeMillis();
        }

        if(cursorVisible){
            paint.getTextBounds(textToDraw, 0, textToDraw.length(), textBounds);
            canvas.drawLine(textX+textBounds.right, textY-textSize, textX+textBounds.right, textY, paint);
        }

        postInvalidateDelayed(500);
    }
}