2013-01-23 1 views
3
의 솟다

스토리 :ViewPager 방법 만 슬쩍보기로하면 PagerTitleStrip

나는 잠시 지금이와 장난 봤는데 어떤 점잖은 문서를 찾을 수 없습니다. 나는 API 레벨 8을 지원해야한다는 것에 잠겨있어보기 호출기는 좋은 해결책처럼 보였다. pagerTitleStrip으로 작업하고 있습니다. 그러나 사용자가 pagerTitleStrip을 스 와이프 할 때만 뷰를 스 와이프 할 수 있기를 바랍니다. 나는 그것이 다소 효과가있다.

문제 :

나는 viewpager 창에 다른보기의 작은 덩어리를 가져다 등 버튼, 글고 필드의 (touch_move) 맨 위에 슬쩍

. 뷰 사이를 스 와이프하기위한 touchmove 이벤트가 pagerTitleStrip의 ontop이 아니면 않는 한 아무 일도 일어나지 않습니다.

실패 시도 : 나는 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에 대한 문서 인용 : "PagerTitleStrip은 현재, 다음 및 이전의 비대화 형 표시기입니다 ViewPager의 페이지 ... 대화식 표시기의 경우 PagerTabStrip을 참조하십시오. " – CommonsWare

+0

PagerTabStrip으로 전환했는데, 스트립의 왼쪽과 오른쪽을 클릭하고 구현하려고했던 화면으로 전환 할 수있었습니다 (감사합니다!). 사용자가 입력 상자를 터치하여 스 와이프하면 뷰어가 슬라이드 할 이벤트를받지 못하게 할 수 없습니다. –

+0

스 와이프를 원치 않으면 왜 'ViewPager'를 사용하고 있습니까? 그것은 ** ViewPager **의 전체 변덕스러운 점입니다 **. – CommonsWare

답변

0

콘텐츠를 전환하기위한 버튼이있는 ViewFlipper를 사용하거나 액션 바 탭 또는 이와 유사한 것을 사용하십시오.