1

是否可以在画布上添加TextView和?ImageView

4

4 回答 4

2

Canvas 不继承自 ViewGroup,因此它没有向其添加子视图的能力。

使用 Canvas,您可以使用 drawBitmap 和 drawText 方法来绘制图像和文本,而不是添加像 TextView 和 ImageView 这样的子控件。

于 2010-10-19T09:40:47.500 回答
2

这是一个迂回的方式,但本教程在他的画布上添加了一个文本视图:

http://www.helloandroid.com/tutorials/how-draw-multiline-text-canvas-easy

于 2011-11-29T21:13:51.510 回答
0

如果你需要自由定位 ImageViews 和 TextViews,你应该使用一个 RelativeLayout。

RelativeLayout 具有高级定位功能并允许重叠。

于 2010-10-19T10:08:10.903 回答
0

- 将您的视图(使用画布)放入 RelativeLayout,

public class YourComponent extends View{
@Override
protected void onDraw(Canvas canvas)

...

public void onDraw(){
....
....
ImageView yourImageView = .....

RelativeLayout.LayoutParams fParams = new RelativeLayout.LayoutParams(25,25);
fParams.leftMargin = 100; //x coordinate
fParams.topMargin  = 25;  /y coordinate
yourImageView.setLayoutParams(fParams);
((RelativeLayout) YourComponent.this.getParent()).addView(yourImageView);

}

}

上面的代码:我创建了显示 25x25 尺寸的布局参数以供查看。之后,我使用边距在父布局上设置适当的位置。并将此 LayoutParams 设置为 ImageView。最后,我将此 imageView 添加到父布局中。

但请注意,在 onDraw() 执行期间,对外部视图的调用操作可能会停止 onDraw()。所以如果你想使用这种方式,请确保你已经完成了所有的 onDraw 操作。我不太确定为什么会这样。我还没有尝试过多地观察它。

于 2012-12-24T16:00:54.363 回答