Android 字体会自动重置吗?安卓工作室
我有自己的函数调用,它根据字符串选择类型faceAndroid 字体会自动重置吗?安卓工作室,android,android-typeface,Android,Android Typeface,我有自己的函数调用,它根据字符串选择类型face Typeface typeface = getTypeface (activity, fontFamily); Typeface getTypeface (Activity activity, String fontName) { Typeface type = null; if (fontName.equals("droidsans") || fontName.equals("normal")) { type
Typeface typeface = getTypeface (activity, fontFamily);
Typeface getTypeface (Activity activity, String fontName) {
Typeface type = null;
if (fontName.equals("droidsans") || fontName.equals("normal")) {
type = Typeface.SANS_SERIF;
} else if (fontName.equals("droidserif") || fontName.equals("serif")) {
type = Typeface.SERIF;
} else if (fontName.equals("droidsansmono") || fontName.equals("monospace")) {
type = Typeface.MONOSPACE;
} else {
type = Typeface.SANS_SERIF;
}
return type;
}
然而,当断点命中type=Monospace it或Serif时,这是相当简单的。断点将返回到type=Sans\u serif
从而使我的字体面等于无衬线而不是单空格
为什么它有时会这样做 试试这个
fontName.toLowerCase().equal("monospace")
我设法找到了解决办法。我将elseif语句更改为Switch语句。似乎字体可能有一些奇怪的问题,如果
switch(fontName)
{
case "droidsansmono":
case "monospace":
type = Typeface.MONOSPACE;
break;
case "droidserif":
case "serif":
type = Typeface.SERIF;
break;
default:
type = Typeface.SANS_SERIF;
break;
}
return type;
这解决了
type=Typeface.SERIF
跳入type=Typeface.SANS\u SERIF的问题代码>与原始if语句代码 它击中了monospace,所以类型首先被铸造为monospace,然后断点返回到前面的if语句。你有没有检查实际值?如果您使用调试器一步一步地检查代码,您可能会看到奇怪的“跳跃”,尤其是在优化代码时。就是说,当调试器无法准确地将位置与源代码行匹配时。嗨,Henry,我确实看到了奇怪的“跳跃”(我该如何修复它?),当我检查值时,它与奇怪的跳跃所建议的匹配。因此,它有时会从type=Typeface.MONOSPACE代码>到type=Typeface.SANS\u衬线代码>最终结果是type=Typeface.SANS\u SERIF代码>sadface