0

有人知道如何在 android 应用程序中强制使用 DroidSans 字体作为 sans 字体而不是 Roboto?

显然 Roboto 字体有一个错误,它不能正确显示重音符号,如下例所示:лю́ди

衬线字体(似乎仍然是 DroidSerif 字体)正确显示(ю 上的重音),但没有 sans 字体(ю 之后的重音)!

新的 sans 字体似乎是 Roboto,我想改用 DroidSans,它可以正确显示内容。

有什么简单的方法可以解决这个问题吗?

非常感谢提前,

塞巴斯蒂安

4

1 回答 1

0

我认为您必须手动将 DroidSans.ttf 添加到您的项目中,然后将其设置为您的文本字段。

将 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 回答