Android 字体调整 fontScale 变化导致界面显示异常的问题

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"

可以解决问题,但是会不会引起其他副作用,暂时未知。

发布者