У меня есть приложение, которое использует пользовательский компонент View, который рисует какой-то текст на экране с помощью Paint/Canvas.
Я использую следующий код (прежде чем я вызову canvas.drawText()), чтобы сделать текст курсивом:
mPaintText.setTypeface(Typeface.defaultFromStyle(Typeface.ITALIC));
Это работает на Samsung Galaxy Nexus. Но на Samsung Epic 4g (галактика S), Samsung Epic Touch (Galaxy SII) и Samsung Transform ультра мой текст по-прежнему не является курсивом.
Кто-нибудь знает, почему некоторые из этих устройств samsung не поддерживают установку курсивного текста таким образом? Я знаю, что устройства способны отображать курсивный текст, потому что, если у меня есть TextView, я могу использовать
tv.setText(Html.fromHtml("<i>sometext</i>");
в java или
android:textStyle="italic"
в layout.xml, и мой текст выделен курсивом.
Кто-нибудь знает по-другому, что я могу установить метод canvas drawText() для рисования текста курсивом, который может работать на этих устройствах?
EDIT:
Вот список некоторых способов, которые я пробовал с их результатом в комментариях после. Оказывается, SERIF, кажется, единственный шрифт, на котором он работает.
mPaint.setTypeface(Typeface.create(Typeface.DEFAULT, Typeface.ITALIC) //Nothing
mPaint.setTypeface(Typeface.create(Typeface.DEFAULT_BOLD, Typeface.ITALIC) //Nothing
mPaint.setTypeface(Typeface.create(Typeface.SERIF, Typeface.ITALIC) //omg it is italic...But serifs look gross.
mPaint.setTypeface(Typeface.create(Typeface.SANS_SERIF, Typeface.ITALIC) //Nothing
mPaint.setTypeface(Typeface.create(Typeface.MONOSPACE, Typeface.ITALIC) //Changes font, but still no italic.
mPaint.setTypeface(Typeface.create(Typeface.DEFAULT, Typeface.BOLD_ITALIC) //Bold but no italic
ИЗМЕНИТЬ СНОВА: Чтобы сделать эту функцию, я в итоге добавил курсивную версию шрифта roboto в свою папку с ресурсами и применил ее как шрифт. Мне все равно будет интересно, если кто-нибудь найдет способ заставить его работать, не добавляя его таким образом.