2013-08-23 2 views
2

в андроид приложении Я использую скользящее меню слева: https://github.com/jfeinstein10/SlidingMenuViewPager и раздвижное меню салфетка распространение

внутри одной деятельности, у меня есть ViewPager:

<android.support.v4.view.ViewPager 
     android:id="@+id/image_pager" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" /> 

я загрузить несколько изображений просмотрите в пейджере от адаптера прокрутку между ними.

Однако я столкнулся с конфликтом в прокрутке.

Когда я сажусь влево, все работает нормально, отображается следующее изображение.

Но когда я прокручу направо, откроется раздвижное меню, так как его поведение.

Могу ли я сделать это так, чтобы прокрутка на панели просмотра не распространялась на скользящее меню?

Я попытался вернуть true в OnTouchListener пейджера, но скользящее меню все еще открывается, и теперь слайдер больше не работает.

  viewPager.setOnTouchListener(new OnTouchListener() { 

     @Override 
     public boolean onTouch(View v, MotionEvent event) { 
      // TODO Auto-generated method stub 
      return true; 
     } 
    }); 

Спасибо за любую помощь

ответ

4

чек принял ответ here

Файнштейн slidingmenu может быть сконфигурирован таким образом он реагирует только на жесты, которые начинаются на краю экрана. Это должно позволить вашему другому обработчику быть единственным делегатом от swipes, которые происходят где-то НЕ на крайнем краю экрана.

Я считаю, что вы можете установить их в «класс BaseActivity расширяет SlidingFragmentActivity»

1

У меня есть лучшее решение:

Установить OnTouchListener для вас ViewPager и отключить SlidingMenu на ACTION_DOWN, включите SlidingMenu на ACTION_UP и ACTION_CANCEL.

Вот код:

ViewPager mPager; 

// Find your SlidingMenu here. 
SlidingMenu mSlidingMenu; 

mPager.setOnTouchListener(new View.OnTouchListener() { 
    @Override 
    public boolean onTouch(View v, MotionEvent event) { 
     switch (event.getAction()) { 
       case MotionEvent.ACTION_DOWN: 
        mSlidingMenu.setSlidingEnabled(false); 
        break; 
       case MotionEvent.ACTION_UP: 
       case MotionEvent.ACTION_CANCEL: 
        mSlidingMenu.setSlidingEnabled(true); 
        break; 
     } 
     return false; 
    } 
} 
Смежные вопросы