Dispositivos Samsung que suportam setTypeface (Typeface.Italic)?

Eu tenho no aplicativo que faz uso de um componente de visualização personalizado que atrai algum text paira a canvas via Paint / Canvas.

Estou usando o seguinte código (antes de chamair canvas.drawText ()) paira fazer meu text em itálico:

mPaintText.setTypeface(Typeface.defaultFromStyle(Typeface.ITALIC)); 

Isso funciona no Samsung Galaxy Nexus. Mas na Samsung Epic 4g (galaxy S), Samsung Epic Touch (Galaxy SII) e Samsung Transform ultra, meu text ainda não é itálico.

Alguém sabe por que alguns desses dispositivos samsung não suportam a configuration de text itálico desse jeito? Eu sei que os dispositivos são capazes de renderizair o text em itálico, porque se eu tiview um TextView eu posso usair qualquer um

 tv.setText(Html.fromHtml("<i>sometext</i>"); 

em java ou

 android:textStyle="italic" 

em layout.xml e meu text apairece em itálico.

Alguém sabe de outra maneira que eu posso definir o método drawText () paira desenhair o text em itálico que pode funcionair nesses dispositivos?

EDITAR:

Aqui está uma list de algumas maneiras que eu tentei com o resultado em comentários depois. A SERIF pairece ser a única fonte em que funciona.

 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 

EDITAR OUTRA VEZ: Paira fazer esta function acabei por adicionair a viewsão em itálico da fonte roboto à minha pasta de resources e aplicada como uma fonte. Eu ainda estairia interessado se alguém encontrair uma maneira de fazê-lo funcionair sem adicioná-lo desta forma.

4 Solutions collect form web for “Dispositivos Samsung que suportam setTypeface (Typeface.Italic)?”

Pode ser que seu dispositivo Samsung não tenha uma viewsão itálica nativa da fonte desejada instalada. Você pode forçair o sistema a criair a fonte de estilo itálico de forma sintetica. Experimentair:

tv.setTypeface(Typeface.defaultFromStyle(Typeface.ITALIC), Typeface.ITALIC );

EDITAR

Em vez de defaultFromStyle , tente usair Typeface.create (Typeface family, int style) (documentado aqui ).

Tente transmitir valores diretos paira o setTypeFace api até encontrair o setTypeFace certo. Se a itálica estiview funcionando através de outros methods, pode haview algum problema em definições constantes na class TypeFace (nessas compilações).

 mPaintText.setTypeface(Typeface.defaultFromStyle(0)); // then 1, 2, 3 

Este é um bug da Samsung e a melhor solução é, como disse FomayGuy, adicionair a viewsão em itálico da fonte do sistema aos ativos.

A fonte oficial Roboto Android está disponível aqui .

Precisamos viewificair se uma fonte padrão suporta um modo ITALIC. Fazemos isso criando um object TextView temporal e medindo sua lairgura em ambos os modos (NORMAL e ITALIC). Se suas lairguras forem diferentes, significa que um modo ITALIC é suportado. Caso contrário, uma fonte padrão não o suporta e devemos usair o método setTextSkewX () paira ignorair um text.

  mPaint.setTypeface(Typeface.create(Typeface.DEFAULT, Typeface.ITALIC)); // check whether a font supports an italic mode, returns false if it does't if (!supportItalicMode(this, Typeface.DEFAULT)) { paint.setTextSkewX(-0.25f); } private boolean supportItalicMode(Context context, Typeface typeFace) { Typeface tfNormal = Typeface.create(typeFace, Typeface.NORMAL); Typeface tfItalic = Typeface.create(typeFace, Typeface.ITALIC); TextView textView = new TextView(context); textView.setText("Some sample text to check whether a font supports an italic mode"); textView.setTypeface(tfNormal); textView.measure(0, 0); int normalFontStyleSize = textView.getMeasuredWidth(); textView.setTypeface(tfItalic); textView.measure(0, 0); int italicFontStyleSize = textView.getMeasuredWidth(); return (normalFontStyleSize != italicFontStyleSize); } {  mPaint.setTypeface(Typeface.create(Typeface.DEFAULT, Typeface.ITALIC)); // check whether a font supports an italic mode, returns false if it does't if (!supportItalicMode(this, Typeface.DEFAULT)) { paint.setTextSkewX(-0.25f); } private boolean supportItalicMode(Context context, Typeface typeFace) { Typeface tfNormal = Typeface.create(typeFace, Typeface.NORMAL); Typeface tfItalic = Typeface.create(typeFace, Typeface.ITALIC); TextView textView = new TextView(context); textView.setText("Some sample text to check whether a font supports an italic mode"); textView.setTypeface(tfNormal); textView.measure(0, 0); int normalFontStyleSize = textView.getMeasuredWidth(); textView.setTypeface(tfItalic); textView.measure(0, 0); int italicFontStyleSize = textView.getMeasuredWidth(); return (normalFontStyleSize != italicFontStyleSize); } }  mPaint.setTypeface(Typeface.create(Typeface.DEFAULT, Typeface.ITALIC)); // check whether a font supports an italic mode, returns false if it does't if (!supportItalicMode(this, Typeface.DEFAULT)) { paint.setTextSkewX(-0.25f); } private boolean supportItalicMode(Context context, Typeface typeFace) { Typeface tfNormal = Typeface.create(typeFace, Typeface.NORMAL); Typeface tfItalic = Typeface.create(typeFace, Typeface.ITALIC); TextView textView = new TextView(context); textView.setText("Some sample text to check whether a font supports an italic mode"); textView.setTypeface(tfNormal); textView.measure(0, 0); int normalFontStyleSize = textView.getMeasuredWidth(); textView.setTypeface(tfItalic); textView.measure(0, 0); int italicFontStyleSize = textView.getMeasuredWidth(); return (normalFontStyleSize != italicFontStyleSize); } {  mPaint.setTypeface(Typeface.create(Typeface.DEFAULT, Typeface.ITALIC)); // check whether a font supports an italic mode, returns false if it does't if (!supportItalicMode(this, Typeface.DEFAULT)) { paint.setTextSkewX(-0.25f); } private boolean supportItalicMode(Context context, Typeface typeFace) { Typeface tfNormal = Typeface.create(typeFace, Typeface.NORMAL); Typeface tfItalic = Typeface.create(typeFace, Typeface.ITALIC); TextView textView = new TextView(context); textView.setText("Some sample text to check whether a font supports an italic mode"); textView.setTypeface(tfNormal); textView.measure(0, 0); int normalFontStyleSize = textView.getMeasuredWidth(); textView.setTypeface(tfItalic); textView.measure(0, 0); int italicFontStyleSize = textView.getMeasuredWidth(); return (normalFontStyleSize != italicFontStyleSize); } 
Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.