Пользовательский рендеринг шрифтов на Android 4.4 имеет пустой прозрачный текст

Что-то странное происходит на Android 4.0 с одним из моих приложений. Я использую пользовательский вид, в котором я устанавливаю пользовательский шрифт с помощью Typeface.createFromAsset . Оформление отлично работает на устройстве / эмуляторе, как вы можете видеть на изображении выше. Проблема возникает, когда я сохраняю содержимое пользовательского представления в виде растрового изображения:

 Bitmap currentBitmap = Bitmap.createBitmap(view.getWidth(), view.getHeight(), Bitmap.Config.ARGB_8888); Canvas canvas = new Canvas(currentBitmap); view.draw(canvas); 

Все работает отлично на android <4.4. Сохраненное изображение выглядит так же, как и изображение, отображаемое на экране. Однако в 4.4 я вижу только границы шрифта, а внутренняя часть текста прозрачна. Как я могу это исправить ?

Введите описание изображения здесь

При рисовании текста на холсте в API 19 и выше вы должны помнить о штрихе и заполнять для объекта Paint, который вы используете. В предыдущих версиях Android текст всегда был заполнен, даже при использовании стиля штриха. В KitKat установка стиля для штрихов сделает именно это; Погладьте текст, а не заполните его. Вам нужно будет вручную задать стиль рисования, который будет заполняться при рендеринге текста, а затем повторно установить его на штрих для рисования других вещей (если это то, что вы пытаетесь сделать).

 @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); mTextPaint.setStyle(Style.STROKE); // do other setup on Paint object // Draw non-text stuff mTextPaint.setStyle(Style.FILL); // do other setup on Paint object // Draw all the text stuff } 
Intereting Posts