我正在尝试在画布中绘制一个纯绿色矩形,然后将该画布添加到 MapView。但是,在将“画布”添加到 MapView 后,其中没有任何内容。我一直在环顾四周,但我无法弄清楚是错的。我正在为 MapView 使用 OSMDroid。
这是该类的代码:
公共类 DrawFrameLayout 扩展 FrameLayout {
MapView mapView;
GeoPoint geoPoint
Canvas canvas = new Canvas();
private FrameLayout layout;
public DrawFrameLayout(Context context, MapView mapView, GeoPoint geoPoint{
super(context);
layout = new FrameLayout(context);
layout.setVisibility(VISIBLE);
this.mapView = mapView;
this.geoPoint= geoPoint
setWillNotDraw(false);
onDraw(canvas);
FrameLayout.LayoutParams params = new FrameLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
params.gravity = Gravity.NO_GRAVITY;
addView(layout, params);
}
@Override
public void onDraw(Canvas canvas) {
super.onDraw(canvas);
Paint paint = new Paint();
// draw a solid green rectangle
paint.setStyle(Paint.Style.FILL);
paint.setColor(Color.GREEN);
paint.setAntiAlias(true);
canvas.drawRect(100, 5, 200, 30, paint);
}
}
这是我从主要活动中实例化类的方式:
DrawFrameLayout frameLayout = new DrawFrameLayout(mapView.getContext(), mapView, geoPoint);
MapView.LayoutParams params = new MapView.LayoutParams(
LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT, geoPoint,
MapView.LayoutParams.BOTTOM_CENTER, 0, 0);
mapView.addView(frameLayout, params);
frameLayout.setLayoutParams(params);
frameLayout.setVisibility(View.VISIBLE);