Android 禁止App字体随系统大小而更改 您所在的位置:网站首页 word的大部分功能被禁用 Android 禁止App字体随系统大小而更改

Android 禁止App字体随系统大小而更改

2023-07-12 17:19| 来源: 网络整理| 查看: 265

运营反馈,老年用户的手机多设置为大字体,在使用我们app过程中,由于字体被放大,导致布局错乱,部分功能按键遮挡,无法正常使用。

收到问题,着手解决,除了对界面布局进行改写,改为约束布局,对app字体大小也进行统一管理,然而这不是主要的,最主要的是避免系统更改app字体的大小。

Android提供了相关的方法用来实现

 public class DisplayUtil {        /**         * 保持字体大小不随系统设置变化(用在界面加载之前)         * 要重写Activity的attachBaseContext()         */        public static Context attachBaseContext(Context context, float fontScale) {            Configuration config = context.getResources().getConfiguration();            //正确写法            config.fontScale = fontScale;            return context.createConfigurationContext(config);        }        /**         * 保持字体大小不随系统设置变化(用在界面加载之前)         * 要重写Activity的getResources()         */        public static Resources getResources(Context context, Resources resources, float fontScale) {            Configuration config = resources.getConfiguration();            if(config.fontScale != fontScale) {                config.fontScale = fontScale;                return context.createConfigurationContext(config).getResources();            } else {                return resources;            }        }        /**         * 保存字体大小,后通知界面重建,它会触发attachBaseContext,来改变字号         */        public static void recreate(Activity activity) {            activity.recreate();        }}

在BaseActivity中复写相关的方法:

 static float fontScale = 1f;    @Override    public Resources getResources() {        Resources resources = super.getResources();        return DisplayUtil.getResources(this,resources,fontScale);    }    @Override    protected void attachBaseContext(Context newBase) {        super.attachBaseContext(DisplayUtil.attachBaseContext(newBase,fontScale));    }        public void setFontScale(float fontScale) {        this.fontScale = fontScale;        DisplayUtil.recreate(this);    }

经测试,在设置中把字体调整为最大,打开app,app中字体均保持不变,测试华为,vivo,小米机型均生效,于是交付测试。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有