3
的
背景故事:ViewPager怎麼只刷圖,如果上層建築PagerTitleStrip
我一直是這樣瞎搞了一段時間,現在並不能找到任何像樣的文檔。我被鎖定爲必須支持api level 8,因此查看尋呼機似乎是一個很好的解決方案。我已經得到它與pagerTitleStrip的工作。但是,我只希望用戶能夠在pagerTitleStrip上滑動時在視圖之間滑動。我有一些工作。
問題:
當我掃過頂部按鈕,的EditText字段等的(TOUCH_MOVE)的viewpager只帶來另一視圖到窗口的一小塊。除非在視圖之間滑動的touchmove事件在pagerTitleStrip的頂部,否則我不想發生任何事情。
失敗的嘗試:
我已經設置了viewPager的onTouchListener任何onTouch事件的操作(touchmove,觸,觸地),我用它來確定用戶是否在pagerTitleStrip刷卡。
//in onCreate()
...
setContentView(R.layout.pager_adapter);
dashboardPagerAdapter = new DashboardPagerAdapter(
getSupportFragmentManager());
dashboardViewPager = (ViewPager) findViewById(R.id.dashboard_pager);
dashboardViewPager.setAdapter(dashboardPagerAdapter);
dashboardViewPager.setId(R.layout.activity_dashboard);
dashboardViewPager.setCurrentItem(DashboardPagerAdapter.DASHBOARD);
dashboardViewPager.setOnTouchListener(this);
...
// in onTouch
View pagerTitleArea = findViewById(R.id.pager_title_strip);
int pagerTitleBottomYLocation = pagerTitleArea.getBottom();
initialYPositionOfEvent = 100; // set the initial position out of range.
int action = event.getAction();
if (action == MotionEvent.ACTION_DOWN){
initialYPositionOfEvent = event.getY();
originWasTitleBar = (initialYPositionOfEvent > pagerTitleBottomYLocation) ? false : true ;
hasTouchDownEventOccured = true;
return true;
} else if (action == MotionEvent.ACTION_MOVE){
if(originWasTitleBar && hasTouchDownEventOccured){
return false;
} else {
return true;
}
} else {
if(originWasTitleBar && hasTouchDownEventOccured){
originWasTitleBar = false;
hasTouchDownEventOccured = false;
return false;
} else {
originWasTitleBar = false;
hasTouchDownEventOccured = false;
return true;
}
}
「但是,我只希望用戶能夠在頁面上滑動頁面時滑動瀏覽頁面」 - 引用「PagerTitleStrip」的文檔:「PagerTitleStrip是當前,下一個和之前的非交互式指示符ViewPager的頁面...有關交互式指示器,請參閱PagerTabStrip。「 – CommonsWare
我沒有切換到PagerTabStrip,這讓我有能力點擊條的左側和右側,切換到那個屏幕,這也是我試圖實現的(謝謝!)。當用戶觸摸輸入框並滑動時,我仍然無法停止viewpager接收事件以進行滑動。 –
如果你不想刷卡,你爲什麼使用'ViewPager'?這是'ViewPager' **的**完整的怪異點。 – CommonsWare