我正在尝试使用Roboto Typeface进行整个应用程序。创建字体对象并将其应用于所有需要的字段,但由于每个TextView上的字段数量增加了findViewId(),因此Button会降低性能。 我正在尝试进行配置,因为他们大多数建议在互联网上,但我无法使用Roboto。我认为“sans-serif-light”没有得到承认。
请建议采用哪种方法。
答案 0 :(得分:0)
创建一个类
public class CustomTextView extends TextView {
static Typeface Roboto_Bold = Typeface.createFromAsset(Global.mainActivity.getAssets(), "Roboto-Bold.ttf");
static Typeface Roboto_Regular = Typeface.createFromAsset(Global.mainActivity.getAssets(), "Roboto-Regular.ttf");
并在构造函数中添加以下代码,在整个应用程序中使用CustomTextView而不是TextView
try {
int style = getTypeface().getStyle();
if (style == (Typeface.BOLD)) {
isBold = true;
}
} catch (Exception e) {
e.printStackTrace();
}
if (isBold)
this.setTypeface(Roboto_Bold);
else
this.setTypeface(Roboto_Regular);
-----更新,
我最近发现自定义字体将以大量内存消耗存储在本机内存中。因此,在自定义TextView类中创建字体将在很大程度上填充本机内存(在我的情况下为300 Mb)取决于创建TextView实例的数量。
因此,最好创建一个TextView引用的静态字体对象,从而减少内存消耗(在我的情况下为20 Mb)
如果你有多个使用字体的自定义视图,请考虑全局静态字体