我通过子类化 ItemizedOverlay 在 MapView 上放置了几个标记。问题是我传递给 ItemizedOverlay 的标记是一个自定义的 Drawable。也就是说,我将“Drawable”子类化并覆盖了 draw() 方法。这样做的目的是为 Drawable 添加一个颜色过滤器,并添加自定义文本:
public void draw(Canvas canvas) {
String[] colorComps = color.split(",");
baseDrawable.mutate().setColorFilter(Color.rgb(Integer.valueOf(colorComps[0]),
Integer.valueOf(colorComps[1]),
Integer.valueOf(colorComps[2])),
PorterDuff.Mode.MULTIPLY);
baseDrawable.draw(canvas);
Paint textPaint = new Paint();
textPaint.setTextAlign(Paint.Align.CENTER);
textPaint.setColor(Color.WHITE);
textPaint.setAntiAlias(true);
textPaint.setTextSize(12);
textPaint.setTypeface(Typeface.DEFAULT);
int textX = getIntrinsicWidth()/2 - 1 + baseDrawable.getBounds().left;
int textY = getIntrinsicHeight()/2 + baseDrawable.getBounds().top;
canvas.drawText(ID, textX, textY, textPaint);
}
问题是,当我这样做时,MapView 上的阴影不是应有的简单灰色、半透明覆盖。相反,颜色过滤器和文本也应用于阴影。关于如何避免这个问题的任何建议?