-
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
单Activity多fragment适配问题 #3
Comments
没办法,只有 Activity 能修改 DisplayMetrics,这个不是我定的,是 Google 定的,你在 Fragment 里面想修改 density,也必须从它依赖的 Activity 上拿到 DisplayMetrics,然后修改,修改后也会影响这个 Activity 下面的其他 Fragment |
不过也有办法,如果你想每个 Fragment 都可以自定义的话,必须每生成一个 Fragment,就切换一次 density,必须一个个生成 Fragment,不能同时生成 |
假设每个fragment density一样的情况其实仍旧是创建时的调用适配就行,如果两个fragment density不一样的话 显示的时候重新调用适配这样会有问题吗? |
两个 Fragment 的 density 不可能不一样,都是一样的,不过你想让每个 Fragment 可以自定义尺寸,或者取消适配,可以通过下面这个方法
在 Fragment 显示视图之前切换就可以了,Activity 我也是这样做的,你们以为 Activity 可以单独设置 density,其实是幻觉,我只不过在这个 Activity setContentView 之前,按照它的需求切换了 density,这个 density 是全局的,不存在什么单独设置这一说 |
明白,Thx |
按这种说法density是全局的话,假设A,B两个Activity A density=1 B density=2 A start B 然后 B finish回到A 这时候比如A突然需要动态addview 就需要重新设置一遍density对吧? |
对,是这个道理,因为全局的 density 现在是 2,而框架,为了避免这个问题,是在每次 onCreate 的时候主动重新设置 density,不过需要重新自定尺寸的页面毕竟在少数,全局 density 给我们带来的好处是减少大量工作量,带来的坏处是,适配范围不可控,影响范围也越大 |
Fragment 自定义尺寸,需求很常见吗?我使用 FragmentLifecycleCallbacks 也可以做到和 Activity 一样的让 Fragment 可以自定义尺寸,但是我担心弄太复杂了,而且全局的 density 在频繁切换的时候也有太多不可确定性,做是可以做,但感觉这个需求也不是太常见,这个成本和收益不相符 |
如上:每次 onCreate 的时候主动重新设置 density |
和模式无关,只要 onCreate 中的 setContentView 计算好了这个 Activity 的 density 并且正确设置就行, setContentView 之后布局就已经定型了,哪怕是其他模式启动时,不执行 onCreate 也无所谓了,因为他的布局已经根据之前的 density 设置好了,至于现在的 density 是多少,并不影响之前的布局 除非这个 Activity 的布局在 setContentView 后改变,这时就必须给这个 Activity 重新计算并且设置 density |
晓得,很赞 |
@xiang23 'me.jessyan:autosize:0.8.0' 已经支持了 Fragment 自定义适配参数 |
@JessYanCoding 感谢大大的付出。 我的使用的是nexus S的模拟器 28版本的sdk 我打印了下生命周期发现问题大概是这样 一种简单解决方法是在onCreateView重新调用一次适配方法,但这样明显不是最优的方式,不知道大大有没有更好的方案 |
忘了测屏幕旋转了,感谢提醒,对,这就是我上面说的如果同时生成 Fragment 那就挺麻烦的,按理说只有在每个 Fragment 的 onCreateView 中重新调一下适配方法,不过这样步骤就繁琐了,具体原因还不清楚,只有星期一再看下 |
7d73855 看来最好的办法只有这样了 |
我使用过程出现了一个问题:主页面acticity+多个fragment,配合fragmentation库,发现无论activity还是fragment页面,顶部与状态栏之间总是有个间隙,另外一台米4(10801920)却没有这个问题,改成 @OverRide |
@jackyHuangH 按照 规范 重新提一个 issues,截图一定要有 |
现在这样适配都对到activity,对多fragment不怎么友好..比如cancelAdapter
The text was updated successfully, but these errors were encountered: