我有一个自定义视图扩展形式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"
在一起,(只是在他们身上也行,)
如果只使用这个属性,这些着色器和矩形都消失了!
为什么?
答案 0 :(得分:2)
在画布中绘制之前,平移滚动的 XY 距离
canvas.translate(getScrollX(), getScrollY());
canvas.drawRect(0,0, getWidth(), getHeight(), borderPaint);
答案 1 :(得分:0)
你的super.onDraw(画布);应该是第一行,否则父母将在您的绘图上绘制。也在构造函数中调用此setWillNotDraw(false)。