设置重力时,Canvas.drawRect在TextView的onDraw中不起作用

时间:2016-05-30 11:26:16

标签: android

我有一个自定义视图扩展形式TextView,并在onDraw()中做一些更改:

@Override
protected void onDraw(Canvas canvas) {
    if (mTextShader == null) {
        createShader();
    }
    shaderMatrix.setTranslate(mProgressWidth,0);
    mTextShader.setLocalMatrix(shaderMatrix);

    Paint paint = new Paint();
    paint.setShader(mBgShader);
    canvas.drawRect(0,0,mProgressWidth,getBottom(),paint);
    getPaint().setShader(mTextShader);
    super.onDraw(canvas);
}

看起来像这样: enter image description here 只需设置一些着色器,并绘制一个矩形,如果我不使用

,它可以正常工作
android:gravity="center"

android:singleLine="true"

在一起,(只是在他们身上也行,)

如果只使用这个属性,这些着色器和矩形都消失了!

为什么?

2 个答案:

答案 0 :(得分:2)

在画布中绘制之前,平移滚动的 XY 距离

canvas.translate(getScrollX(), getScrollY());
canvas.drawRect(0,0, getWidth(), getHeight(), borderPaint);

答案 1 :(得分:0)

你的super.onDraw(画布);应该是第一行,否则父母将在您的绘图上绘制。也在构造函数中调用此setWillNotDraw(false)。