幕后故事:
我在这件事上花了一段时间,找不到任何像样的文件。我不得不支持API级别8,所以View Pager似乎是一个很好的解决方案。我已经让它和PagerTitleStrip一起工作了。但是,我只希望用户在PagerTitleStrip上滑动时能够在视图之间滑动。我有一些工作。
问题:
当我在按钮、编辑文本字段等的顶部(触摸移动)滑动时,viewpager只将另一个视图的一小部分带入窗口。我不希望发生任何事情,除非要在视图之间滑动的touchMove事件是pagerTitleStrip的ontop。
失败的尝试:
我已经设置了viewpager的ontouchListener和任何用于确定用户是否在pagerTitleStrip上刷屏的ontouch事件操作(touchMove、touchUp、touchDown)。

//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;
        }
    }

最佳答案

使用带按钮的视图翻转器来切换内容,或者使用操作栏选项卡,或者类似的东西。

关于android - ViewPager如何仅在PagerTitleStrip的顶部滑过 View ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14488022/

10-10 04:02