ViewPager为相邻页面设置间距并配置背景色出现白色细线问题的解决方案

问题概述

我们都知道,ViewPager可以通过如下方式为相邻页面设置间距:
pager.setPageMargin(55)
此时,相邻页面会出现一个55px的间距,间距的背景色默认为白色。
通常情况下,默认的白色背景并不能满足项目的需求,当然,android开发者也考虑到了这一点,所以他们提供了一个方法来设置这个颜色:
pager.setPageMarginDrawable(R.color.black)
这样,ViewPager的间距背景就被设置为黑色了。一切看上去都很完美!但是问题也就来了,当你试着去左右滑动切换页面时,你会发现,有的页面的边缘竟然出现了一条极细的白线,如下图:


ViewPager为相邻页面设置间距并配置背景色出现白色细线问题的解决方案_第1张图片
这简直不能忍啊,有木有?间距背景默认为白色的时候,这条细线根本看不到,当颜色设置为黑色的时候,就很明显了。

分析

如何去掉这恼人的白色细线呢?

第一步:

首先确认ViewPager的每一页的View布局是否设置有margin值,检查一遍后, 没有!!

第二步:

到这里,基本能确定这是ViewPager自身的问题了。那么,我们可以推测, ViewPager在绘制间距的时候由于计算偏差,导致有1dp的宽度没有绘制。所以这1dp的宽度就显示成了一条白色细线,而之所以显示白色是因为ViewPager的默认背景色为白色。

解决方案

前面已经分析了问题产生的可能原因,接下来就是验证阶段了。

既然这条白色细线是由于ViewPager绘制偏差产生的,并且细线的颜色与ViewPager的背景色保持一致。那么,我们为什么不可以将ViewPager的背景色设置为和间距的背景色一致(黑色),从而产生一条黑色的细线,显然这条黑色的线我们是看不到的嘛!!这样,不就巧妙解决了问题么??



你可能感兴趣的:(问题总结)