一、 APP字体大小,不随系统的字体大小变化而变化的方法
1、将字体大小的单位设置了dp,就可以固定字体大小不随系统设定的字号变化
sp和dp很类似但唯一的区别是,Android系统允许用户自定义文字尺寸大小(小、正常、大、超大等等),当文字尺寸是“正常”时1sp=1dp=0.00625英寸,而当文字尺寸是“大”或“超大”时,1sp>1dp=0.00625英寸。
2、代码设置(新)
● 新建类MyContextWrapper
import ;
import ;
import ;
import ;
import ;
import ;
import ;
public class MyContextWrapper extends ContextWrapper {
public MyContextWrapper(Context base) {
super(base);
}
@NonNull
public static ContextWrapper wrap(Context context) {
Resources resources = ();
Configuration newConfig = new Configuration();
DisplayMetrics metrics = ();
();
//如果没有设置densityDpi, createConfigurationContext对字体大小设置限制无效
= ;
if (.SDK_INT > Build.VERSION_CODES.JELLY_BEAN_MR1) {
context = (newConfig);
} else {
(newConfig, ());
}
return new MyContextWrapper(context);
}
}
复制代码
● 在所有Activity(BaseActivity)添加
@Override
protected void attachBaseContext(Context newBase) {
((newBase));
}
复制代码
updateConfiguration 设置会对其他Activity也有效。 createConfigurationContext 自对当前Activity有效。
3、代码设置(过时)
1)在Application中加入
private void setTextDefault() {
Resources res = ();
Configuration config = new Configuration();
();
(config, ());
}
复制代码
缺点:如果home出来,更改了字体大小,字体还是会改变。完全退出应用在进去,字体才会改为默认大小。
2)在所有Activity 中加入,改变字体大小能及时还原默认大小。
@Override
public Resources getResources() {
Resources resources = ();
if (().fontScale != 1) {
Configuration newConfig = new Configuration();
();
(newConfig, ());
}
return resources;
}
复制代码
二、WebView 显示html 字体大小不随系统变化
(100);//防止系统字体大小影响布局