AndroidAutoSize使用时遇到的特麻烦bug

前言

维护、迭代老项目时候遇到的事情。

makefile 复制代码
com.github.JessYanCoding:AndroidAutoSize

代码

kotlin 复制代码
AutoSizeConfig.getInstance()
            .setCustomFragment(false)
            .setExcludeFontScale(true)
            .setLog(false)
            .setBaseOnWidth(true)
            .setUseDeviceSize(false) //屏幕适配监听器
            .setOnAdaptListener(object : onAdaptListener {
                override fun onAdaptBefore(target: Any?, activity: Activity?) {
                  ScreenUtils.getScreenSize(activity) 的参数一定要不要传 Application!!!
                    AutoSizeConfig.getInstance().setScreenWidth(720)
                    AutoSizeConfig.getInstance().setScreenHeight(1080)
                }

配置了固定的尺寸。

adapter的数据加载异常

开始的时候没有理会,因为UI异常并不明显,实际是源代码的开发者,用了些邪法,让字体显示的位置比较固定,但实际的字体大小是不同的。

后来在增加新的显示UI时,就发现问题了。

我直接移除了邪法的控件设置,异常就特别的明显。

字体大小完全不同。

adapter下来刷新就出现问题。

特别是在表现上,从另一个Activity跳转回来,就会触发异常问题。

最后的解决

scss 复制代码
    /**
     * 重新设置AutoSize-density值
     * 否则,item会使用原屏幕的dpi值生成UI
     */
    private void resetDensity() {
        // 在刷新数据前先触发 AutoSize 适配,确保 RecyclerView 使用正确的 density
        AutoSizeConfig.getInstance().setScreenWidth(720);
        AutoSizeConfig.getInstance().setScreenHeight(1080);
        AutoSizeCompat.autoConvertDensityOfGlobal(getResources());
    }
    //刷新adapter
    productAdapter.setNewData(goodsDataLists, gridLayoutManager, id);

增加了如此的设置之后,adapter总算是没有发生UI显示的异常了。

相关推荐
最爱睡觉睡觉睡觉3 分钟前
代碼案例:CSS 屬性對照
前端·app
VitoChang15 分钟前
开发体验超赞的SolidJS2.0来了
前端
CoCo的编程之路18 分钟前
2026全栈演进:使用前端开发助手进行项目重构的最佳工具
大数据·前端·人工智能·ai编程·comate
@PHARAOH1 小时前
WHAT - NextAuth 权限认证机制
前端·微服务·服务端
掘金一周1 小时前
问卷调查:如果现在收到裁员通知,你手里的现金流能支撑多久? | 沸点周刊6.4
前端·人工智能·后端
wb043072011 小时前
前厅翻修记——从阿明的“8 秒点餐页“,看前端工程化与用户体验的全面升级
前端·架构·ux
riuphan1 小时前
揭秘 JS 类型转换:ToPrimitive 机制的神秘面纱
前端·javascript
最爱睡觉睡觉睡觉1 小时前
Flutter ThemeData 主题系统
前端·app
最爱睡觉睡觉睡觉1 小时前
pub.dev 常用包 vs npm 生态对照
前端·app
先吃饱再说1 小时前
从三行代码理解前端的“三权分立”:HTML、CSS、JS 各司其职
前端