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显示的异常了。

相关推荐
Setsuna_F_Seiei6 小时前
前端转型 Agent 开发 04 之 MCP 与 Skill(赋予 Agent 更广工作能力)
前端·agent
刘发财8 小时前
前端2秒生成500页矢量PDF,rust真的强到没朋友
前端·javascript·rust
郑州光合科技余经理8 小时前
国际版外卖系统:税率字段怎么和订单主流程解耦
android·java·开发语言·前端·后端·php·ai编程
梦想平凡9 小时前
百游棋牌源代码开发搭建教程(十):隔离部署、备份恢复与双端验收
java·前端·javascript·数据库·源代码管理
yume_sibai10 小时前
06-Rust Web 开发实战(Axum 框架 + 数据库 + JWT 认证 + 中间件 + 部署)
前端·数据库·rust
计算机魔术师11 小时前
特朗普上台打给黄仁勋:AI末日论是骗局,我们绝不让它发生
前端
troy12811 小时前
Python 基础语法(八):Web 后端开发、数据分析与可视化、网络爬虫、人工智能 / 大模型应用
前端·python·数据分析
计算机魔术师12 小时前
CEO说要慢下来,黑客说别做梦了——同一篇论文,两种命运
前端
kyriewen12 小时前
我花3天抓了一个幽灵bug,凶手藏在第4层
前端·javascript·程序员
IT_陈寒13 小时前
Java里用Stream.parallel()翻车实录,这性能还不如单线程
前端·人工智能·后端