我发现很多带指示器的ViewPager
控件都是继承一个RelativeLayout
然后通过代理ViewPager
的方法来伪装成一个ViewPager
,而indicator
就是覆盖在这个ViewPager
之上。
我觉得这样做有点点乱。就想通过继承一个ViewPager
然后在onDraw
自己通过canvas
将indicator
画上去,结果发现自己太年轻了,indicator
在画上去的时候,布局是显示在ViwePager
的item 0
上(看起来像是在item 0 之上),ViewPager
滑动的时候indicator
也跟着跑了。
如上图显示,我的indicator
跟着跑了。接着我让我的indicator
的x坐标
在onDraw
中用getLocationOnScreen()
中获得的做处理。结果发现不行。
这样的话我能想到的又只有像其他一样在ViewPager
之外包裹一层RelativeLayout
,(当然我觉得FrameLayout
更好)
但是有点不甘心这样处理的控件不能用一个View
解决而是要3个View
互相嵌套觉得不爽啊,请教大神有没有什么办法可以让一个ViewGounp
处理控件内内容滑动的同时,某些内容不被同时移动呢?
发出这个问题之前我在想,我是不是应该监听ViewPager
的偏移量然后在onDraw
中不断向内容的移动反方向移动?我去试试
我监听了
onScrollChanged()
获取了偏移量,然后在onDraw()
中,加上了这个偏移量解决了这个问题。但是发现
onDraw
中indicator
会被ViewPager
中的内容覆盖掉~~这个方案还是不行啊!!求助