1.禁止跟隨系統(tǒng)字體大小調(diào)節(jié)
在Application中復寫getResources()方法
@Override
public Resources getResources() {//還原字體大小
Resources res = super.getResources();
Configuration configuration = res.getConfiguration();
if (configuration.fontScale != 1.0f) {
configuration.fontScale = 1.0f;
res.updateConfiguration(configuration, res.getDisplayMetrics());
}
return res;
}
2.應用全局字體大小調(diào)節(jié)
在Application中復寫getResources()方法
@Override
public Resources getResources() {//還原字體大小
Resources res = super.getResources();
Configuration configuration = res.getConfiguration();
if (configuration.fontScale != fontScale) {//fontScale要縮放的比例
configuration.fontScale = fontScale;
res.updateConfiguration(configuration, res.getDisplayMetrics());
}
return res;
}
3.Android 8.0適配
Android 8.0上會發(fā)現(xiàn)這樣修改字體的縮放比例是不起作用的,
需要在Activity中同樣進行復寫getResources()方法。
4.整個應用字體大小調(diào)節(jié)方案
在設置界面進行字體縮放比例調(diào)節(jié)唾琼,退出時關(guān)閉所有已打開的Activity,并重啟主界面主胧。
@Override
public void onBackPressed() {
saveFontScaleRate();
}
private void saveFontScaleRate() {
if (defaultFontScaleRate != fontScaleRate) {
new SpUtils(FontScaleActivity.this).putData(ICourtApplication.FONT_SCALE_RATE, fontScaleRate);
BaseApplication.setFontScale(fontScaleRate);
AppManager appManager = AppManager.getAppManager();
MainActivity activity = appManager.getActivity(MainActivity.class);
appManager.finishAllActivity(activity);
activity.recreate();
} else {
finish();
}
}
5.注意
所有想要縮放的控件,不只是TextView习勤,任何控件踪栋,只需要將尺寸單位換成SP,
自然图毕,不想要隨字體調(diào)節(jié)改變的也只需將SP換成其他單位夷都。