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:

  • Android Textview Itálico e wrap_contents
  • 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.

  • Android Textview Itálico e wrap_contents
  • 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.