是否可以在画布上添加TextView
和?ImageView
问问题
8825 次
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 回答