我發現很多帶有指示器的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
中的內容覆蓋掉~~這個方案還是不行啊! !求助