java Android画布不呈现Framelayout
我试图在画布上画一个FrameLayout
,但我无法让它工作。画一个ImageView
很好,所以我不确定我错过了什么
下面是一个我试图画FrameLayout
的例子:
@Override
protected void onDraw(Canvas canvas) {
Context activity = this.getContext();
FrameLayout.LayoutParams cellParams = new FrameLayout.LayoutParams(100, 100);
ImageView cloud = new ImageView(activity);
cloud.setLayoutParams(cellParams);
cloud.setImageResource(R.drawable.transparent_cloud_large);
FrameLayout gameTile = new FrameLayout(activity);
gameTile.addView(cloud);
gameTile.layout(100, 200, 200, 300);
gameTile.draw(canvas);
}
我也在尝试,没有为ImageView
设置LayoutParams
,而是使用:cloud.layout(0, 0, 100, 100);
,但这两种方法都不起作用
这是我的ImageView
代码,它确实有效
@Override
protected void onDraw(Canvas canvas) {
Context activity = this.getContext();
ImageView image = new ImageView(activity);
image.setImageResource(R.drawable.transparent_cloud_large);
image.layout(100, 100, 200, 200);
image.draw(canvas);
}
我是否需要以某种方式重写FrameLayout's
{
我看到javadocs表示“在调用这个函数之前,视图必须已经完成了完整的布局。”也许这是我的问题?如何在FrameLayout
上“进行完整布局”
# 1 楼答案
我成功了。它错过了对
measure
的呼叫。这就是我最后使用的:GameTile
是FrameLayout
的一个子类。使用save
、translate
和restore
方法在画布上定位FrameLayout