2013-01-23 31 views
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; 
     } 
    } 
+0

「但是,我只希望用戶能夠在頁面上滑動頁面時滑動瀏覽頁面」 - 引用「PagerTitleStrip」的文檔:「PagerTitleStrip是當前,下一個和之前的非交互式指示符ViewPager的頁面...有關交互式指示器,請參閱PagerTabStrip。「 – CommonsWare

+0

我沒有切換到PagerTabStrip,這讓我有能力點擊條的左側和右側,切換到那個屏幕,這也是我試圖實現的(謝謝!)。當用戶觸摸輸入框並滑動時,我仍然無法停止viewpager接收事件以進行滑動。 –

+0

如果你不想刷卡,你爲什麼使用'ViewPager'?這是'ViewPager' **的**完整的怪異點。 – CommonsWare

回答

0

使用帶按鈕的ViewFlipper切換內容,或使用操作欄選項卡或類似的東西,也許。