栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

2021-10-27

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

2021-10-27

关于app字体不随系统改变而变化的问题

最近做到这个需求,要求app内字体不跟随系统调大了文字而改变。在网上找了半天,找到的都是大概如下方法:

  Resources resources = super.getResources();
  Configuration config = resources.getConfiguration();
  if(config.fontScale!=1f){
 	 config.fontScale = 1f;
 	 return createConfigurationContext(config).getResources();
  }else{
	return resources ;
 }

经过我实际测试,测试环境为小米K40Pro,安卓11。发现不管我系统字号怎么设置,获取到的config.fontScale总是为1.0。不知道是不是因为小米系统的问题。因为总是为1.0导致if判断为false,直接return了resource。无法重新赋值fontScale为1f/1.0/1.0f。

解决方案为。去掉if判断。总是执行config.setToDefaults(); 或者 config.fontScale = 1f;


10.29更新:
发现使用这种方式后,导致出现大量莫名其妙的问题。怀疑是跟重写getResources有关。
APP页面结构为viewpager+fragment。
首次发现问题:
在一个fragment中点击按钮打开一个第三方的H5小游戏sdk。这时候就会崩溃,错误信息为

android.view.InflateException: Binary XML file  ............Error inflating class 

后来将fragment所在的activity里面的重写getResources改为了重写attachbaseContext

    @Override
    protected void attachbaseContext(Context newbase) {
        Configuration config = newbase.getResources().getConfiguration();
        config.fontScale=1;
        Context context=newbase.createConfigurationContext(config);
        super.attachbaseContext(context);
    }

解决了这个问题。

但是后续又陆续出现多个各种页面报错Binary XML file Error inflating class的情况,
例如:
在fragment A中打开手机号一键登录,登录成功,返回fragment A,然后切换到fragment B,这时就会崩溃。经测试发现如果不调起一键登录就不会出问题。
例如:
在fragment A中打开ActivityA,关闭ActivityA,再切换fragment崩溃。关闭ActivityA后再打开一键登录,崩溃。
由于所有Activity都继承自baseActivity,baseActivity中重写了getResources,删除重写的getResources部分恢复正常。

具体原因,解决方法还没有找到

有网友给出了一个方法,重写activity的onstart方法

 @Override
    protected void onStart() {
        super.onStart();
        DisplayMetrics displayMetrics = getResources().getDisplayMetrics();
        displayMetrics.scaledDensity = displayMetrics.density;
    }

我的实际效果是有效果,但不是100%有效。重启APP后第一次打开activity无效,关闭activity后重开才起效果。并且打开某些第三方sdk的时候还存在问题,比如瑞狮H5小游戏,会显示网络错误,无法正常打开。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/356995.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号