1

Я не уверен, что я правильно подошел к этой проблеме и надеялся получить совет от дружественного сообщества SO. В принципе, я хочу получить эффект, как скользящее меню, выходящее с левой стороны экрана, но я хочу, чтобы и меню, и главный экран делились одним и тем же фоном. Поэтому, когда меню выходит, оно просто подталкивает основной контент вправо, но они имеют один и тот же фон.Как остановить Android ViewPager от прокрутки мимо определенной точки?

Я попытался использовать ViewPager, поместив меню в положение 0 и основное содержимое в положение 1. Он отлично выглядит, за исключением того, что я не знаю, как остановить ViewPager от моментального переключения в исходное положение или полностью перейдя на следующую страницу. Я бы хотел, чтобы он остановился примерно наполовину. Я попытался переопределить метод OnPouch() ViewPager, и я могу узнать, когда представление было перетаскивается на полпути, но я не знаю, как его заблокировать.

Любые идеи?

ответ

5

После некоторого рытья я выяснил, как это сделать. Для вашего пейджера адаптер, вытяните один из них. В моем случае я расширил FragmentStatePagerAdapter. Затем перезапишите его метод getPageWidth() и явно задайте ширину для каждой страницы.

/** 
* This method should return a percentage of the measured screen width, booya 
* 
* @param position 
* @return 
*/ 
@Override 
public float getPageWidth(int position) 
{ 
    switch (position) 
    { 
     case 0: 
      return .33f; 
     case 1: 
      return 1; 
     case 2: 
      return .8f; 
     default: 
      return 1; 
    } 
} 

Так что в этом примере есть 3 страницы. Страница слева будет на 1/3 экрана, страница в середине будет полноэкранной, а страница справа будет 4/5 экрана. Это дает эффект скользящего меню, но с общим фоном.

Смежные вопросы