在没有子类的情况下在视图中绘制图像

Draw image inside a View without subclassing

我可以在不进行子类化的情况下在视图中绘制图像吗?我试过:

TextView texto = (TextView) viewGroup.findViewWithTag("text");
Paint p = new Paint();
p.setColor(Color.WHITE);
Bitmap b = BitmapFactory.decodeResource(getResources(), R.mipmap.ic_lanc);
Bitmap b2 = b.copy(Bitmap.Config.ARGB_8888, true);
Canvas c = new Canvas(b2);
c.drawBitmap(b, 1, 1, p);
textView.draw(c);

有人可以帮助我吗?

画画不是那样的。 textview 的 draw() 方法将由 android 调用,系统提供一个 canvas 实例。当您使用自己创建的 canvas 调用它时,textview 将在您的 canvas 实例上自行绘制,但这与屏幕上显示的内容无关。

您不能直接这样做——在视图上调用 draw(Canvas) 将导致 该视图 将其绘图命令执行到 canvas 中。因此,在您的情况下,会将 TextView 绘制到您提供的 Canvas 上(而不是相反)。

如果你需要这样做,你可以在视图上设置一个可绘制的子类,它自己进行自定义绘制,然后那个会在视图的canvas,但无论您想在这里做什么,都可能有更简单的方法。在不了解您的要求的情况下,这是不可能的。