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