Я пытаюсь нарисовать сплошной зеленый прямоугольник на холсте, а затем добавить этот холст в MapView. Однако после добавления «холста» в MapView в него ничего не появляется. Я осматривался, но не могу понять, что это неправильно. Я использую OSMDroid для MapView.
Вот код для класса:
открытый класс DrawFrameLayout extends 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);