有人知道如何在 android 应用程序中强制使用 DroidSans 字体作为 sans 字体而不是 Roboto?
显然 Roboto 字体有一个错误,它不能正确显示重音符号,如下例所示:лю́ди
衬线字体(似乎仍然是 DroidSerif 字体)正确显示(ю 上的重音),但没有 sans 字体(ю 之后的重音)!
新的 sans 字体似乎是 Roboto,我想改用 DroidSans,它可以正确显示内容。
有什么简单的方法可以解决这个问题吗?
非常感谢提前,
塞巴斯蒂安
有人知道如何在 android 应用程序中强制使用 DroidSans 字体作为 sans 字体而不是 Roboto?
显然 Roboto 字体有一个错误,它不能正确显示重音符号,如下例所示:лю́ди
衬线字体(似乎仍然是 DroidSerif 字体)正确显示(ю 上的重音),但没有 sans 字体(ю 之后的重音)!
新的 sans 字体似乎是 Roboto,我想改用 DroidSans,它可以正确显示内容。
有什么简单的方法可以解决这个问题吗?
非常感谢提前,
塞巴斯蒂安
我认为您必须手动将 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())