web-dev-qa-db-ja.com

APIレベル14以上のアプリでRobotoフォントを使用する

最小APIレベルが14のアプリがあります。互換性のあるすべてのデバイスにRobotoフォントをデフォルトとしてインストールする必要があると私は思っていますか? textViewフォントをRobotoまたはRoboto Lightに設定すると、デフォルトで通常の書体ではなく書体になります。

Robotoフォントをアセットとして含めずにRobotoを使用する方法はありますか?

19
Milo

Robotoフォントをアセットとして含めずにRobotoを使用する方法はありますか?

API 11 <に対してこれを行う他の方法はありません。

私は通常、ロボットの書体用のカスタムTextViewを作成します。

public class TextView_Roboto extends TextView {

        public TextView_Roboto(Context context, AttributeSet attrs, int defStyle) {
                super(context, attrs, defStyle);
                createFont();
        }

        public TextView_Roboto(Context context, AttributeSet attrs) {
                super(context, attrs);
                createFont();
        }

        public TextView_Roboto(Context context) {
                super(context);
                createFont();
        }

        public void createFont() {
                Typeface font = Typeface.createFromAsset(getContext().getAssets(), "robo_font.ttf");
                setTypeface(font);
        }
}

これで、レイアウトで次のように使用できます。

<com.my.package.TextView_Roboto>
  Android:layout_width="..."
  Android:layout_height="..."
  [...]
</com.my.package.TextView_Roboto>

もちろん、TextViewレイアウトを作成できます。 1つはプレHC用、もう1つはHC以上用です(layoutおよびlayout-v11フォルダーを使用する必要があります)。これで<include>タグを使用して、レイアウトにTextViewを含めます。あなたはこれを使用してこれをしなければなりません:

if (Android.os.Build.VERSION.SDK_INT >= 11){
    TextView txt = (TextView) findViewById(R.id.myTxtView);
}
else{
    TextView_Roboto txt = (TextView_Roboto) findViewById(R.id.myTxtView);
}

編集:

Robotoは、Android 4.1+から次のようにネイティブで使用できます。

Android:fontFamily="sans-serif"           // roboto regular
Android:fontFamily="sans-serif-light"     // roboto light
Android:fontFamily="sans-serif-condensed" // roboto condensed
58
Ahmad