Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

【BUG】全局使用副单位在代码中修改字体变得非常大 #115

Closed
5 tasks done
FynnJason opened this issue Dec 28, 2018 · 5 comments
Closed
5 tasks done

Comments

@FynnJason
Copy link

Environment

  • Autosize Version: 1.1.1
  • Target Android Version:
  • Device Model:
  • Device Resolution:
  • Design Size On AndroidManifest:

Bug Description:

整个项目是使用副单位,在代码中动态使用AutoSizeUtils去修改TextView的大小,会导致字体非常大!例如在xml中我的textview设置为48pt很正常,那么我在代码中设置textview大小textview.setTextSize(AutoSizeUtils.pt2px(getActivity(), 48)); 字体就非常非常大,不知道什么原因。

application中初始化为
AutoSizeConfig.getInstance()
.getUnitsManager()
.setSupportDP(false)
.setSupportSP(false)
.setSupportSubunits(Subunits.PT);

Log:


1

Screenshot

Related Code:

Others:

@FynnJason
Copy link
Author

FynnJason commented Dec 28, 2018

如果注释掉.setSupportSP(false),也就是对sp支持,在代码中继续使用pt,textview.setTextSize(AutoSizeUtils.pt2px(getActivity(), 48)); 字体大小就可以和xml保持一致。

@FynnJason
Copy link
Author

FynnJason commented Dec 29, 2018

这样将出现系统自带的组件字体变的非常小(例如Toast),无可厚非,因为没有屏蔽对sp的支持,上面出现的问题应该是一个bug,希望大佬能看一下。

@FynnJason FynnJason changed the title 全局使用副单位在代码中修改字体变得非常大 【BUG】全局使用副单位在代码中修改字体变得非常大 Dec 29, 2018
@JessYanCoding
Copy link
Owner

JessYanCoding commented Jan 7, 2019

我这里复现不了,都是正常的,考虑只是你的系统或者你的环境偶发的问题,你自己断点看看 DisplayMetrics#xdpi 的值是不是正确的,如果不是正确值,考虑可能是 DisplayMetrics#xdpi 没被正确设置,或者在你的环境中 DisplayMetrics#xdpi 被恢复了初始状态,这样即可 #13 (comment)

@jeffy5
Copy link

jeffy5 commented May 7, 2021

@FynnJason 我也遇到了同样的问题,我猜测是 setTextSize 默认使用的是 sp 单位,而 AutoSizeUtils.pt2px 转换的结果是 px

最后我在 setTextSize 时标明使用 TypedValue.COMPLEX_UNIT_PX 就显示正常了。

tvTitle.setTextSize(TypedValue.COMPLEX_UNIT_PX,
    AutoSizeUtils.pt2px(context, 24f).toFloat())

@shaobin0604
Copy link

@FynnJason 我也遇到了同样的问题,我猜测是 setTextSize 默认使用的是 sp 单位,而 AutoSizeUtils.pt2px 转换的结果是 px

最后我在 setTextSize 时标明使用 TypedValue.COMPLEX_UNIT_PX 就显示正常了。

tvTitle.setTextSize(TypedValue.COMPLEX_UNIT_PX,
    AutoSizeUtils.pt2px(context, 24f).toFloat())

直接用 vTitle.setTextSize(TypedValue.COMPLEX_UNIT_PT, 24f) 是不是就可以了

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants