我想在我的 Android 应用程序中使用 Roboto 字体,并确保它适用于未安装该字体的早期版本的 Android。我知道我可以通过使用 Typeface.createFromAsset() 然后手动设置每个 TextViews/Buttons/Other-Objects 的字体来做到这一点。不过,对屏幕上显示的每个对象执行此操作似乎很痛苦。
我的问题是,有更好的方法吗?一些帮助程序类或在 .xml 主题文件中设置自定义字体的方法?任何自动化的操作都比手动列出每个屏幕上的每个对象并更改字体更好。
Thanks!
上面接受的答案是正确的,但我只是想在这里提供我的实现
我的实用程序类:
package com.example.utils;
import android.content.Context;
import android.graphics.Typeface;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
public class AndroidUtils
{
private static Typeface robotoTypeFace;
public static void setRobotoFont (Context context, View view)
{
if (robotoTypeFace == null)
{
robotoTypeFace = Typeface.createFromAsset(context.getAssets(), "fonts/Roboto/Roboto-Regular.ttf");
}
setFont(view, robotoTypeFace);
}
private static void setFont (View view, Typeface robotoTypeFace)
{
if (view instanceof ViewGroup)
{
for (int i = 0; i < ((ViewGroup)view).getChildCount(); i++)
{
setFont(((ViewGroup)view).getChildAt(i), robotoTypeFace);
}
}
else if (view instanceof TextView)
{
((TextView) view).setTypeface(robotoTypeFace);
}
}
}
如何使用它,假设this
是一个活动:
AndroidUtils.setRobotoFont(this, view);
要为所有 TextView 设置相同的字体,您可以使用 Activity 的decorView:
ViewGroup godfatherView = (ViewGroup)this.getWindow().getDecorView();
AndroidUtils.setRobotoFont(this, godfatherView);
如果您有适配器或片段,也不要忘记设置它们的字体。
See here https://stackoverflow.com/a/10184068/410712 also.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)