Android 字体调整,比如调整为超大字体,此时会导致Configuration 中的fontScale 变化导致界面显示异常。目前找到的办法为,在Application 的OnCreate 事件中增加如下代码
getResources().getDisplayMetrics().scaledDensity = getResources().getDisplayMetrics().scaledDensity/getResources().getConfiguration().fontScale;
继承并覆盖 onConfigurationChanged 方法
@Override public void onConfigurationChanged(Configuration newConfig) { getResources().getDisplayMetrics().scaledDensity = getResources().getDisplayMetrics().scaledDensity/newConfig.fontScale; super.onConfigurationChanged(newConfig); }
在 AndroidManifest.xml 中的 application 部分增加处理 onConfigurationChanged 事件的声明
<application android:configChanges="fontScale"
可以解决问题,但是会不会引起其他副作用,暂时未知。