Samsung-Geräte unterstützt setTypeface (Typeface.Italic)?

Ich habe in der Anwendung, die Gebrauch von einer benutzerdefinierten View-Komponente, die einige Text auf den Bildschirm über Paint / Canvas zieht.

Ich benutze den folgenden Code (bevor ich canvas.drawText () anrufe, um meinen Text zu machen Kursiv:

  • Android SkImageDecoder :: Factory zurückgegeben Null Fehler
  • Nehmen Sie das Bild mit Zieh / Farbe auf Gesicht mit Vision api
  • Unity3D Build-Fehler
  • Outlook - Lesen Sie den Kalender eines anderen Benutzers
  • Benutzerdefinierte Schriftart in Android
  • Haben Testkonten eine echte Kreditkarte benötigt, um über In-App-Abrechnung zu kaufen?
  • mPaintText.setTypeface(Typeface.defaultFromStyle(Typeface.ITALIC)); 

    Dies funktioniert auf Samsung Galaxy Nexus. Aber auf Samsung Epic 4g (Galaxy S), Samsung Epic Touch (Galaxy SII) und Samsung Transform ultra mein Text ist noch nicht kursiv.

    Weiß jemand, warum einige dieser Samsung-Geräte nicht die Einstellung kursiv Text auf diese Weise? Ich weiß, die Geräte sind in der Lage, den kursiven Text zu machen, denn wenn ich eine TextView habe, kann ich entweder verwenden

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

    In java oder

     android:textStyle="italic" 

    In layout.xml und mein text erscheint kursiv.

    Kennt jemand von einer anderen Art und Weise, dass ich die drawText () Methode der Leinwand setzen kann, um den Text kursiv zu zeichnen, der an diesen Geräten funktionieren könnte?

    BEARBEITEN:

    Hier ist eine Liste von einigen Möglichkeiten, die ich es mit ihrem Ergebnis in Kommentare nach versucht habe. Stellt sich aus SERIF scheint die einzige Schriftart zu sein, auf der es funktioniert.

     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 

    BEARBEITEN WIEDER: Um diese Funktion zu machen, habe ich die kursive Version der roboto Schriftart in meinen Assets-Ordner aufgenommen und als Schriftart angewendet. Ich würde mich immer noch interessieren, wenn jemand jemals einen Weg findet, es zu arbeiten, ohne es so hinzuzufügen.

  • Beste Weg, um segmentierte Progress Bar zu schaffen?
  • Android Studio, wie man einzelne AAR aus mehreren Bibliotheksprojekten verpackt?
  • Was ist einfacher zu Code: Android App vs iOS App?
  • Google Play Services für Froyo
  • Verbinden Sie mit SQL Server von Android
  • Wie importiere ich android.support.v7.app.NotificationCompat.Builder Klasse in Android Studio
  • 4 Solutions collect form web for “Samsung-Geräte unterstützt setTypeface (Typeface.Italic)?”

    Es kann sein, dass Ihr Samsung-Gerät keine native kursive Version der gewünschten Schriftart installiert hat. Möglicherweise müssen Sie das System zwingen, die kursivartige Schriftart synthetisch zu erstellen. Versuchen:

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

    BEARBEITEN

    Statt defaultFromStyle versuchen Sie, Typeface.create (Typeface family, int style) ( hier dokumentiert).

    Versuchen Sie, direkte Werte auf die setTypeFace api zu übergeben, bis Sie die richtige gefunden haben. Wenn Kursivschrift durch andere Methoden funktioniert, dann könnte es ein Problem in konstanten Definitionen in der TypeFace Klasse (in diesen Builds) geben.

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

    Dies ist ein Fehler von Samsung und die beste Lösung ist, wie FomayGuy sagte, um die kursive Version des System-Schriftart auf die Vermögenswerte hinzuzufügen.

    Die offizielle Roboto Android Schriftart steht hier zur Verfügung.

    Wir müssen überprüfen, ob eine Standardschrift einen ITALIC-Modus unterstützt. Wir machen es, indem wir ein temporäres TextView-Objekt erstellen und seine Breite in beiden Modi (NORMAL und ITALIC) messen. Wenn ihre Breiten unterschiedlich sind, dann bedeutet dies, dass ein ITALIC-Modus unterstützt wird. Andernfalls wird eine Standardschriftart nicht unterstützt und wir müssen die setTextSkewX () – Methode verwenden, um einen Text zu verschieben.

      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); } 
    Das Android ist ein Google Android Fan-Website, Alles ├╝ber Android Phones, Android Wear, Android Dev und Android Spiele Apps und so weiter.