今天在工作中遇到了UI上的字体跟随系统的变化,导致整体变样了,所以就想了让APP不随系统字体变化,网上查了一下,了解从android4.0起系统设置的”显示“提供设置字体大小的选项。这个设置直接会影响到所有sp为单位的字体适配,所以很多app在设置了系统字体后瞬间变得面目全非。
原文参考:http://blog.csdn.net/zhuqiang1002/article/details/38756127
后面我直接将textview集成了重新写一个类引用,然后重写getResource这个方法,吧fontScale设为1表示原来大小。
@Override
public Resources getResources() {
Resources res = super.getResources();
Configuration config=new Configuration();
//config.setToDefaults();
config.fontScale=1.0f;
res.updateConfiguration(config, res.getDisplayMetrics());
return res;
}
另外一种是动态去,超过原大小不变
private void setNewFileSizeText(TextView textView, int size) {
float textsize = 12;
Configuration mconfig = new Configuration();
float s = mconfig.fontScale;
if (textView != null) {
if (size <= 0) {
textView.setVisibility(View.GONE);
} else if (size >= 100) {
if( s >= 1.0f)
textsize = textsize/s;
textView.setText(String.valueOf(99) + "+");
textView.setTextSize(textsize);
textView.setVisibility(View.VISIBLE);
} else {
textView.setTextSize(textsize);
textView.setText(String.valueOf(size));
textView.setVisibility(View.VISIBLE);
}
}
}