11

表示するデータに応じて、テキストビューのフォントを斜体に変更したいアプリを作成しています。

私のGalaxy Nexusでは、それは単に

textView.setTypeface(font, iWantItalics ? Typeface.ITALIC : Typeface.NORMAL);

そしてそれは美しく機能します。

問題は、テストする新しいGalaxy Note IIを持っていることです...いいえ、イタリック体はありません。

setTypeface(Typeface.Italic) をサポートする Samsung デバイスを読みますか? これは Note の Android ビルドのバグであるという印象を受けます。そのため、Roboto フォントには単純にイタリック体がありません。私はそのスレッドと同様の他のスレッド ( 、 など) に関するすべてのアドバイスを試しましたがTypeface.defaultFromStyle(Typeface.ITALIC)Typeface.create(null, Typeface.ITALIC)うまくいきませんでした。

私の問題は、そのスレッドの男が使用した回避策は、assetsディレクトリに Roboto TTF をコピーし、そこからフォントを作成することでしたが、携帯電話に別のデフォルト フォントを使用している人々はどうですか? それらに Roboto を強制したくありません。さらに悪いことに、書体が通常の場合は別のフォントを使用し、それ以外の場合は Roboto の斜体を使用することはしたくありません。

誰か私にアイデアはありますか?ありがとう。

4

2 に答える 2

14

このバグの回避策として、この方法でテキストをイタリック体に設定できます (これは、壊れた Samsung デバイスで機能するようです)。

textView.setText(setTextStyleItalic(textView.getText());

そして、このメソッドが必要です:

public static CharSequence setTextStyleItalic(CharSequence text) {
    final StyleSpan style = new StyleSpan(Typeface.ITALIC);
    final SpannableString str = new SpannableString(text);
    str.setSpan(style, 0, text.length(), 0);
    return str;
}
于 2013-02-19T15:25:58.040 に答える