Intereting Posts
Кодирование и декодирование byte с ZXing Android-Multiple Spinners Что делать, когда вы пытаетесь создать приложение для Android, и «Нет доступных целей»? Установить выбранный индекс Android RadioGroup Когда вызывается метод getApplicationContext () класса Application? Класс для упрощения создания потоков фона и синхронизации потоков пользовательского интерфейса Устройства Samsung не закрывают ящик приложения после трансляции CLOSE_SYSTEM_DIALOGS Мгновенный запуск занимает больше времени, чем стандартные сборки Установка Android SDK и AVD Manager Как вызвать перерисовку родительского представления, когда кто-либо из его детей перерисовывается? PhoneGap и WhatsApp Android Nougat 7.1 сбрасывает локаль после запуска WebView Являются ли поля чтения объекта Realm медленнее, чем объекты Java? Android: EditText.setInputType (), как настроить для электронной почты, но не автоматически предлагать PendingIntent получает requestCode

Android Paint.setTypeface не работает для курсива

Paint.setTypeface не работает для курсива или я делаю что-то не так. Я могу создать нормальный, полужирный, моноширинный и засекреченный текст, но я не могу создать курсив. Он всегда выглядит нормально (или в случае полужирным шрифтом, он выглядит полужирным шрифтом).

//This will appear monospace paint.setTypeface(Typeface.MONOSPACE); canvas.drawText("foo", 10, 10, paint); //This will appear serif paint.setTypeface(Typeface.SERIF); canvas.drawText("foo", 10, 10, paint); //This will appear bold paint.setTypeface(Typeface.defaultFromStyle(Typeface.BOLD)); canvas.drawText("foo", 10, 10, paint); //This will NOT appear italic <=== PROBLEM paint.setTypeface(Typeface.defaultFromStyle(Typeface.ITALIC)); canvas.drawText("foo", 10, 10, paint); // This isn't working either <=== PROBLEM paint.setTypeface(Typeface.create(Typeface.SANS_SERIF, Typeface.ITALIC)); 

Итак, теперь вопрос: существует ли известное обходное решение для этого? Моя простая цель – нарисовать некоторые слова с курсивом

Solutions Collecting From Web of "Android Paint.setTypeface не работает для курсива"

После того, как я столкнулся с такой же трудностью, я нашел решение, ловя рыбу в исходном коде TextView . Попробуй это:

 paint.setTextSkewX(-0.25f); 

У меня такая же проблема. Похоже, что не все шрифты для Android поддерживают стиль ITALIC. Попытайтесь следовать, я работал для меня:

 paint.setTypeface(Typeface.create(Typeface.SERIF,Typeface.ITALIC)); 

Прекрасно работает с SERIF. DEFAULT, MONOSPACE, SANS_SERIF использует этот стиль.

PS Я говорю об API 10.

Чтобы получить курсивный режим для устройств, которые не поддерживают его для шрифта по умолчанию, мы должны использовать метод setTextSkewX. Однако, прежде чем применять его, мы должны быть уверены, что курсивный режим не поддерживается. Мы достигаем этого, создавая временный объект TextView и измеряя его ширину в обоих режимах (NORMAL и ITALIC). Если их ширина одинакова, то это означает, что режим ITALIC НЕ поддерживается.

Пожалуйста, взгляните на решение, представленное в другом вопросе: устройства Samsung, поддерживающие setTypeface (Typeface.Italic)?