3

裏話:

私はしばらくの間これをいじっていて、まともなドキュメントを見つけることができません。私はAPIレベル8をサポートする必要があることに固執しているので、ビューページャーは良い解決策のように思えました。pagerTitleStripで動作するようになりました。ただし、pagerTitleStripをスワイプするときに、ユーザーがビュー間をスワイプできるようにするだけです。私はそれをいくらか機能させています。

問題:

ボタンの上部(touch_move)、edittextフィールドなどをスワイプすると、viewpagerは他のビューのごく一部だけをウィンドウに表示します。ビュー間をスワイプするtouchmoveイベントがpag​​erTitleStripの上にない限り、何も起こらないようにします。

失敗した試み:

viewPagerのonTouchListenerとonTouchイベントアクション(touchmove、touchup、touchdown)を設定しました。これを使用して、ユーザーが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;
        }
    }
4

1 に答える 1

0

コンテンツを切り替えるためのボタンを備えた ViewFlipper を使用するか、アクション バーのタブなどを使用します。

于 2013-01-28T20:44:16.900 に答える