在项目开发中,发现reyclerview的margin在同一个fragment的切换下会有细微差别,同样的fragment类,首页先创建一个fragment对象,然后用户点击第二个tab时再创建第二个fragment对象,这时候通过切换两个fragment就会发现,不管是recylerview的margin还是添加的itemdecoration都会有细微的区别。
没有很好的思路,只能在切换tab的时候,查看一下recyclerview的宽度和里面item的宽度。通过切换发现两个fragment对象里面的recyclerview的width大小并不相同,而我的recyclerview的外面还有一层smartresfresh,查看smartrefresh的width确实一样的。这使得我更懵了,这个不理解先放一边,继续看itemdecoration的大小,不出所料也是不一样的。而这里的能判断的地方就出现了,item的间距是自己写的一个简易的分割线,需要传进去一个高度,这个高度是通过dp转px算出来的。立马查看了一下这个转换方法返回的值是否一样,最后得出的结果是density的值就不一样,一直以为同一部机器的density应该是一直一样的,现在这个结果又颠覆了我的预想。
有了上面的发现,我又打了log,发现density最开始都是大一点儿,然后再获取就是比较小的。通过上面的发现,我猜测recyclerview的margin也可能是这个问题导致的,为了避免这个问题,只能把recyclerview的margin加到了item的margin上,毕竟item的渲染会比recyclerview的晚一些(通过接口)。
item的分割线的大小,我暂时的解决办法是只获取一次density的值,进行缓存,同一个页面用相同的缓存。