스토리 :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;
}
}
"그러나 pagerTitleStrip에 대한 문서를 인용하면"pagerTitleStrip에 대한 문서 인용 : "PagerTitleStrip은 현재, 다음 및 이전의 비대화 형 표시기입니다 ViewPager의 페이지 ... 대화식 표시기의 경우 PagerTabStrip을 참조하십시오. " – CommonsWare
PagerTabStrip으로 전환했는데, 스트립의 왼쪽과 오른쪽을 클릭하고 구현하려고했던 화면으로 전환 할 수있었습니다 (감사합니다!). 사용자가 입력 상자를 터치하여 스 와이프하면 뷰어가 슬라이드 할 이벤트를받지 못하게 할 수 없습니다. –
스 와이프를 원치 않으면 왜 'ViewPager'를 사용하고 있습니까? 그것은 ** ViewPager **의 전체 변덕스러운 점입니다 **. – CommonsWare