我没有得到它,我有其他自定义视图,我可以完美地绘制到画布。但是现在我创造的新观点根本没有画到画布上!我在当时和现在所做的事情之间找不到任何可辨别的区别,它仍然是相同的" 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()将使用颜色填充视图。
这个视图是活动中唯一的视图,当我把另一个视图放在"工作"在它的自定义视图中绘制得很好。但现在任何新的自定义视图我试图绘制DON' T DRAW。
答案 0 :(得分:1)
您正在使用的颜色具有 alpha值0 (又名透明)和白色。尝试使用use paint.setColor(0xFFFF3432);
绘图或类似可能与背景形成对比的东西 - 看看你是否看到一条红线,你知道它有效。
然后选择您想要的颜色。如果是白色,请确保使用0xFFFFFFFF
而不是0xFFFFFF
颜色格式:
0xAARRGGBB
其中A = Alpha /透明度,R =红色,G =绿色,B =蓝色。
答案 1 :(得分:0)
您没有覆盖onDraw方法。 试试这个
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
//your stuff here
}
答案 2 :(得分:0)
假设您为视图提供了正确的宽度和高度,看起来您的绘图工作正常。但是,您的活动背景可能是白色的,而您绘制的线条也是白色/透明的 - 导致妄想。
尝试将油漆颜色更改为:
paint.setColor(Color.Red);