How do you draw text with a border on a MapView in Android?

后端 未结 4 2009
北海茫月
北海茫月 2020-11-28 02:49

I\'m trying to draw some text onto an MapView on Android. The drawing of the text goes fine, but it\'s very hard to read the text because it\'s white with no black border (

4条回答
  •  野性不改
    2020-11-28 03:06

    The easiest way to do this is with a Stroke... something like this:

    @Override
    public void draw(Canvas canvas, MapView mapView, boolean shadow) {
        Paint strokePaint = new Paint();
        strokePaint.setARGB(255, 0, 0, 0);
        strokePaint.setTextAlign(Paint.Align.CENTER);
        strokePaint.setTextSize(16);
        strokePaint.setTypeface(Typeface.DEFAULT_BOLD);
        strokePaint.setStyle(Paint.Style.STROKE);
        strokePaint.setStrokeWidth(2);
    
        Paint textPaint = new Paint();
        textPaint.setARGB(255, 255, 255, 255);
        textPaint.setTextAlign(Paint.Align.CENTER);
        textPaint.setTextSize(16);
        textPaint.setTypeface(Typeface.DEFAULT_BOLD);
    
        canvas.drawText("Some Text", 100, 100, strokePaint);
        canvas.drawText("Some Text", 100, 100, textPaint);
    
        super.draw(canvas, mapView, shadow);
    }
    

    This will draw a border of 2 pixels around the outside of the text then draw the text over the top of it, giving you the illusion of an outline.

    Also, it may be worth setting the Paints up in the constructor then just reusing them.

提交回复
热议问题