AndroidAutoSize icon indicating copy to clipboard operation
AndroidAutoSize copied to clipboard

使用Autosize长度生效,文字大小不完全生效

Open Yasin27878 opened this issue 4 years ago • 3 comments

Environment

  • [x] Autosize Version: v1.2.1
  • [x] Target Android Version: Android 9/鸿蒙os beta2
  • [x] Device Model: 小米note3/华为mate30pro
  • [x] Device Resolution: 1080px * 1920px/1176px * 2400px
  • [x] Design Size On AndroidManifest: 375dp * 750dp

Bug Description:

集成1.2.1版本后,屏幕适配生效,dp对应的适配都是没问题的,但是文字大小适配的不完全生效,具体来说实际适配的ScaledDensity会比计算的ScaledDensity大一些。日志也都是是正常计算出来的ScaledDensity

做过如下尝试:

  • 1.更改design size的width宽度,整体也会放大缩小,但是实际适配的ScaledDensity还是会比计算出来的大。density依旧适配正常。
  • 2.尝试重写getResources(),页面适配正常。(density、ScaledDensity都正常) ··· @Override public Resources getResources() { //需要升级到 v1.1.2 及以上版本才能使用 AutoSizeCompat Resources resources = super.getResources(); Log.d(TAG, "getResources1: density " + resources.getDisplayMetrics().scaledDensity); // AutoSizeCompat.autoConvertDensityOfGlobal(resources);//如果没有自定义需求用这个方法 Log.d(TAG, "getResources2: density " + resources.getDisplayMetrics().scaledDensity); return resources; } ···

Log:

image

image

Screenshot

高度一致,但不是文字大小不一致,切相差较大 image

Related Code:

  

Others:

Yasin27878 avatar Mar 29 '21 13:03 Yasin27878

可能是系统字体大小的影响,setExcludeFontScale,如果 API 不起作用,那就可能是项目中的其他地方的未知代码设置了 ScaledDensity,ScaledDensity 和 Density 是整个项目公有的,三方库或者系统都有可能修改他们,框架也不无法阻止这些行为,所以在 getResources() 设置是最保险的选择

JessYanCoding avatar Jul 05 '21 11:07 JessYanCoding

您好,您解决这个问题了吗,我也遇到了

HelloAnyu avatar Aug 10 '21 09:08 HelloAnyu

您好,您解决这个问题了吗,我也遇到了

没有找到root cause,目前还是通过重写getResources()解决

Yasin27878 avatar Oct 27 '21 02:10 Yasin27878