-
Notifications
You must be signed in to change notification settings - Fork 2k
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
主页面有很多个fragment,第一次运行软件,有的页面整体变得很大;当程序退出后,以后再进来都很正常,请问这是什么问题? #69
Comments
这个问题我也一直碰到,某些fragment适配会失败,变成副单位的尺寸,然后控件就变的很大。希望作者看下是什么问题@JessYanCoding |
由于 Fragment 的生命周期特别复杂,很多特殊情况会导致框架自动适配的失效,如果遇到失效请在合适的时机手动适配,比如 https://github.com/JessYanCoding/AndroidAutoSize/blob/master/demo/src/main/java/me/jessyan/autosize/demo/CustomFragment1.java#L47 |
兄弟 你解决了么 我的也是 我还纳闷是什么原因呢 我的主页全是 fragment, 有时候进来 整体会变小 ,怎么解决呢?分享一波???我的并不是因为屏幕旋转导致的,就是偶然性的 ,但频率有点高 |
兄弟能举一反三好吗 ...,你发生问题的原因虽然不是屏幕旋转但是解决方案却是一样的,今日头条方案唯一的不足就是修改后的 density 会在某些情况,或者在某些机型上被恢复成默认的 density,导致适配失效或者适配异常 你只要在当前页面的 view 被显示到屏幕上之前,把 density 修改成你期望的值就可以保证一定能完成适配,应用到框架中就是在合适的时机调用 AutoSize#autoConvertDensity() 手动修改 density,#13 (comment) 中已经描述的非常清楚了,这个就是万能的解决方案,所有适配失效都可以通过这个方式解决,如果这个方式都不能解决,那基本很难解决了 还有如果使用了自定义 Fragment 这个功能,需要注意一下,Fragment 的自定义尺寸这个需求,框架虽然支持,但是只是为了支持某些项目的特殊需求而设立的,实际开发中基本很难用到,所以框架才默认是关闭的,一般一个 Fragment 的布局覆盖了整个屏幕并且这个 Fragment 的设计图尺寸却和之前布局的设计图尺寸不同才会需要自定义 Fragment,如果一个 Activity 的整个页面由多个 Fragment 布局分割,每个 Fragment 只是占整个页面的一部分,并不能完全覆盖整个屏幕,那这几个 Fragment 是不需要自定义设计图尺寸的,你只要保证这个 Activity 的设计图尺寸和设计图是一样的就可以了,因为在这时这几个 Fragment 只是碎片,将这几个碎片组合起来才是一个设计图,而 Activity 是一个将他们组合在一起的容器,你只要保证这个容器的设计图尺寸是对的就可以了 |
设计搞的尺寸是750*1334,那在fragment的onCreateView中调用AutoSize.autoConvertDensity(getActivity(), 375, true)指定density吗。是传的375吗,运行后尺寸不对 还是只实现CustomAdapt。这个相当于覆盖了设计搞的尺寸吧,会解决适配失效的问题吗
|
onCreateView 中调用 AutoSize.autoConvertDensity() 即可,不需要实现 CustomAdapt,AutoSize.autoConvertDensity() 中填写你 manifest 中写的宽度 |
|
@anuo10 不行是哪种不行你也没截图,只要确定,View 在被绘制之前 density 被修改成期望的值,按系统的原理不会出现问题,除非是系统定制过,修改了某些东西 |
暂时复现不了,不好意思哈,我看上面讲解,是在创建 fragment 的时候去约束布局,我想根据 fragment 的生命周期的去约束,应该就可以了.要是还有问题,再反馈哈 |
@anuo10 好的👌 |
@wjj201411 重新进入 App 也需要调用 AutoSize.autoConvertDensity,比如在 onResume 中调用 |
我已经再onCreateView中调用了autoConvertDensity,还要在onResume中调用吗。 |
对,在 onResume 中调用,上面的原理我也分析了,适配失效的原因无非就是 修改后的 density 会在某些情况,或者在某些机型上被恢复成默认的 density,你保证 View 绘制前,density 是正确值即可 |
好的,谢谢群主哈 |
@JessYanCoding 建议大佬加个更新日志··· 我之前用的是1.0.0,今天看了下成了1.0.5了! 不知道大佬更新了什么!, 哈哈哈 这只是我个人的愚见啊! |
@JessYanCoding 请问这个打印有方法控制吗 |
@wmjwmj828 AutoSizeConfig.getInstance()
.setLog(false); |
第一次运行时日志
The text was updated successfully, but these errors were encountered: