Samsung devices supporting setTypeface(Typeface.Italic)?
android, italic, typeface
Solution
It may be that your Samsung device does not have a native italics version of the desired font installed. You may have to force the system to create the italics-style font synthetically. Try:
`tv.setTypeface(Typeface.defaultFromStyle(Typeface.ITALIC),` `Typeface.ITALIC``);`
EDIT
Instead of `defaultFromStyle`, try to use `Typeface.create (Typeface family, int style)` (documented here).
Problem
I have in application that makes use of a custom View component that drawas some text onto the screen via Paint/Canvas. I am using the following code (before I call canvas.drawText()) to make my text Italic: ``` mPaintText.setTypeface(Typeface.defaultFromStyle(Typeface.ITALIC)); ``` This works on Samsung Galaxy Nexus. But on Samsung Epic 4g (galaxy S), Samsung Epic Touch (Galaxy SII), and Samsung Transform ultra my text is still non-italic. Does anyone know why some of these samsung devices wouldn't support setting italic text that way? I know the devices are capable of rendering the italic text because if I have a TextView I can use either ``` tv.setText(Html.fromHtml("<i>sometext</i>"); ``` in java or ``` android:textStyle="italic" ``` in layout.xml and my text appears italic. Does anyone know of another way that I can set the drawText() method of canvas to draw the text italicized that might work on these devices? EDIT: Here is a list of some ways I've tried it with their outcome in comments after. Turns out SERIF seems to be the only font that it works on. ``` 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 ``` EDIT AGAIN: To make this function I ended up adding the italic version of the roboto font to my assets folder and applied it as a font. I'd still be interested if anyone ever finds a way to get it working without adding it this way.