Быстрый и простой ответ является №
, JavaScript является настоящим высокоуровневым языком и не имеет доступа к этому виду информации.
Самый простой способ сделать это с инсультом ... что-то подобное:
@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);
}
Это нарисует границу из 2 пикселей вокруг снаружи текста, затем нарисуйте текст над Верхняя часть этого, давая вам иллюзию наброски.
Кроме того, это может стоить установить краски в конструкторе, а затем просто повторно их использовать.
Половинный ответ, который может быть или не может быть достаточно хорошим (это было в моем случае), - это установить тень:
textPaint.setShadowLayer(3, 0, 0, Color.BLACK);
Тень помогает тексту сильно выделяться, но не так хорошо, как черная рамка. Мне все еще любопытно, как решить исходный вопрос.
Это полный снимок в темноте, и может быть лучший способ, но если вы создадите 4 копии текста, установите их цвет на черный, а затем сместите каждый слой на 1 пиксель по диагонали, это создаст иллюзию границы. Итак, если ваш текст расположен в [100,100], 4 тени нужно будет расположить в точках [99,99], [99,101], [101,99] и [101,101], например:
canvas.drawText("Some Text", 99, 99, borderPaint);
canvas.drawText("Some Text", 99, 101, borderPaint);
canvas.drawText("Some Text", 101, 99, borderPaint);
canvas.drawText("Some Text", 101, 101, borderPaint);
canvas.drawText("Some Text", 100, 100, textPaint);