【发布时间】:2016-06-02 06:40:49
【问题描述】:
我不明白,我有其他自定义视图可以完美地绘制到画布上。但是现在我正在创建的新视图根本不会绘制到画布上!我在当时和现在所做的事情之间找不到任何明显的区别,毕竟它仍然是相同的“canvas.drawLine()”调用。
这是一个示例视图,无论我尝试如何使用它都不会绘制(请注意,背景是黑色的,因此应该显示白色)
public class TestView extends View {
public TestView(Context context)
{
super(context);
}
public TestView (Context context, AttributeSet attrs)
{
super(context, attrs);
}
public void onDraw(Canvas canvas){
Paint paint = new Paint();
paint.setColor(0xFFFFFF);
paint.setStyle(Paint.Style.STROKE);
paint.setStrokeWidth(4);
canvas.drawLine(0,0, 500, 500, paint);
canvas.drawCircle(0,0, 40, paint);
Logy.Print("Drew top:" + getTop() + " left:" + getLeft() + " right:" + getRight() + " bottom:" + getBottom());
}
}
我看过其他类似的问题,我遇到的这个问题绝对不同于其他问题。我没有拼错 onDraw,onDraw 被调用(我可以通过 Logy 判断,这只是 Debug.log() 的一个更简单的外观)。在将此标记为其他内容的重复项之前,请考虑这一点。
调用 onDraw 时视图的尺寸为 0,0,800,800(左、上、右、下)。活动开始时至少调用一次 onDraw。 canvas.drawRGB() 将使视图充满颜色。
此视图是活动中的唯一视图,当我将另一个“工作”自定义视图放在它的位置时,它的绘制效果很好。但是现在我尝试绘制的任何新的自定义视图都不要绘制。
【问题讨论】:
-
textview的高宽是多少,背景是什么颜色
-
您的颜色的 alpha 值为 0,或完全透明。如果您想要纯白色,请将其更改为
0xFFFFFFFF,或者直接使用Color.WHITE。