ViewPager 和 SlidingPaneLayout 衝突解決辦法

大神可以直接看原始文章:http://stackoverflow.com/questions/17490899/using-androids-slidingpanelayout-with-viewpager

ViewPager 和 SlidingPaneLayout都可以左右的滑動.

上面文章中說要修改v4包裏的SlidingPaneLayout的源碼,首先要找到它,如果沒有直接連接到這個源碼的,是看不到的.可以再Android sdk-->extras-->android-->support-->v4-->src-->java-->android->support-->v4-->widget文件裏面找到

1.首先修改 onInterceptTouchEvent 中的 ACTION_MOVE動作裏面的代碼,在if判斷中添加一個或的判斷,就是下面的紅色代碼部分

if (adx > slop && ady > adx<span style="color:#ff0000;"> || canScroll(this, false, Math.round(x - mInitialMotionX), Math.round(x), Math.round(y))</span>) {


2.找到canScroll方法.修改他的返回值,返回值修改爲紅色部分,其中canViewPagerScrollHorizontally方法是沒有的,需要手動的添加

return <span style="color:#ff0000;">checkV && (ViewCompat.canScrollHorizontally(v, -dx) || ((v instanceof ViewPager) && canViewPagerScrollHorizontally((ViewPager) v, -dx)));


3.添加canViewPagerScrollHorizontally方法

boolean canViewPagerScrollHorizontally(ViewPager p, int dx) {
    return !(dx < 0 && p.getCurrentItem() <= 0 || 0 < dx && p.getAdapter().getCount() - 1 <= p.getCurrentItem());
}



上面的操作修改完成之後就可以了,記得修改xml文件裏面的路徑

還有個博客用了另一種方法做可修改.同時修改了2個類的源碼,SlidingPaneLayout和ViewPager,雖然我沒有用這種方法.但是給了我指引,非常感謝

博客地址:http://blog.csdn.net/songzeyang99/article/details/16884217

附上 actionbar+viewpager+SlidingPaneLayout的demo, actionbar用的是第三方ViewPageIndicator,沒有打包.直接導入到工程了

工程地址: http://download.csdn.net/detail/hxy01245120/8406665






發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章