0

Roboto の代わりに sans フォントとして Android アプリケーションで DroidSans フォントの使用を強制する方法を誰かが知っていますか?

どうやら Roboto フォントにバグがあり、次の例のようにアクセントが正しく表示されません。

serif フォント (これはまだ DroidSerif フォントのようです) では正しく表示されます (ю のアクセント)。

新しい sans フォントは Roboto のようです。代わりに、適切に表示される DroidSans を使用したいと思います。

その問題を解決するための簡単な解決策はありますか?

事前にどうもありがとう、

セバスチャン

4

1 に答える 1

0

DroidSans.ttfをプロジェクトに手動で追加してから、それをyoutテキストフィールドに設定する必要があると思います。

DroidSans.ttfをプロジェクトのassetsフォルダーに配置します。これを使用して、すべてのTextViewに適用します(この例は、太字のフォントも使用している場合です)。

public static void setDroidSans(final ViewGroup view,final  Context context){

    Typeface droidFont=Typeface.createFromAsset(context.getAssets(),  "fonts/DroidSans.ttf");
    Typeface droidFontBold=Typeface.createFromAsset(context.getAssets(),  "fonts/DroidSansBold.ttf");
    for (int i = 0; i < view.getChildCount(); i++) {
        checkForTextview(view.getChildAt(i),droidFont,droidFontBold);
    }   

}

private static void checkForTextview(View view, Typeface typeface, Typeface typefaceBold){
    if(view instanceof ViewGroup){
        ViewGroup v=(ViewGroup) view;
        for (int i = 0; i < v.getChildCount(); i++) {
            checkForTextview(v.getChildAt(i),typeface,typefaceBold);
        }
    }
    else if(view instanceof TextView){
        if(((TextView)view).getTypeface() == Typeface.DEFAULT_BOLD)
            ((TextView)view).setTypeface(typefaceBold);
        else 
            ((TextView)view).setTypeface(typeface);
    }

}  

使用例:

ViewGroup myRootView= (ViewGroup)findViewById(R.id.rootView);
setDroidSans(myRootView, getApplicationContext())
于 2012-06-07T12:08:50.243 に答える