Android ViewPager – просмотр предварительного просмотра страницы слева и справа

Я использую Android ViewPager . То, что я хочу сделать, – показать предварительный просмотр страницы как слева, так и справа. Я видел, где я могу использовать отрицательный pageMargin чтобы показать предварительный просмотр правой стороны.

 setPageMargin(-100); 

В любом случае, я могу показать предварительный просмотр левой стороны? В основном это похоже на виджет галереи, который я ищу.

Solutions Collecting From Web of "Android ViewPager – просмотр предварительного просмотра страницы слева и справа"

Чтобы показать предварительный просмотр левой и правой страниц, установите следующие два значения

  1. viewpager.setClipToPadding(false);
  2. viewpager.setPadding(left,0,right,0);

Если вам нужно пространство между двумя страницами в viewpager, добавьте

 viewpager.setPageMargin(int); 

Ответ от @JijuInduchoodan является совершенным и работает. Однако, поскольку я относительно новичок в Android, мне потребовалось некоторое время, чтобы понять и установить его правильно. Итак, я отправляю этот ответ для будущей справки и помогаю всем, кто в той же обуви, что и я.

 if (viewPager == null) { // Initializing view pager viewPager = (ViewPager) findViewById(R.id.vpLookBook); // Disable clip to padding viewPager.setClipToPadding(false); // set padding manually, the more you set the padding the more you see of prev & next page viewPager.setPadding(40, 0, 40, 0); // sets a margin b/w individual pages to ensure that there is a gap b/w them viewPager.setPageMargin(20); } 

Нет необходимости устанавливать ширину на страницу ViewPager's в адаптере. Нет дополнительного кода, необходимого для просмотра предыдущей и следующей страницы в ViewPager . Однако, если вы хотите добавить пустое место в верхней и нижней части каждой страницы, вы можете установить следующий код в родительский макет родительской страницы ViewPager.

 android:paddingTop="20dp" android:paddingBottom="20dp" 

Final ViewPager

Это будет окончательный вид ViewPager.

В 2017 году такое поведение также может быть легко достигнуто с помощью RecyclerView с PagerSnapHelper (добавлено в версию 25.1.0 библиотеки поддержки v7): 

Введите описание изображения здесь

Когда-то мне понадобилась такая функция, подобная viewpager, и подготовила крошечную библиотеку:

MetalRecyclerPagerView – вы можете найти весь код вместе с примерами.

В основном он состоит из одного файла класса: MetalRecyclerViewPager.java (и два xmls: attrs.xml и ids.xml ).

Надеюсь, это поможет кому-то и сэкономит несколько часов 🙂

Используйте этот адаптер фрагмента и класс, чтобы просмотреть viewpager в левом и правом scroll.add необходимых классах, чтобы прокручивать, чтобы просмотреть следующие страницы.

 package com.rmn.viewpager; import java.util.List; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentManager; import android.support.v4.app.FragmentPagerAdapter; /** * The <code>PagerAdapter</code> serves the fragments when paging. * @author mwho */ public class PagerAdapter extends FragmentPagerAdapter { private List<Fragment> fragments; /** * @param fm * @param fragments */ public PagerAdapter(FragmentManager fm, List<Fragment> fragments) { super(fm); this.fragments = fragments; } /* (non-Javadoc) * @see android.support.v4.app.FragmentPagerAdapter#getItem(int) */ @Override public Fragment getItem(int position) { return this.fragments.get(position); } /* (non-Javadoc) * @see android.support.v4.view.PagerAdapter#getCount() */ @Override public int getCount() { return this.fragments.size(); } } package com.manishkpr.viewpager; import android.content.Context; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentManager; import android.support.v4.app.FragmentPagerAdapter; public class ViewPagerAdapter extends FragmentPagerAdapter { private Context _context; public ViewPagerAdapter(Context context, FragmentManager fm) { super(fm); _context=context; } @Override public Fragment getItem(int position) { Fragment f = new Fragment(); switch(position){ case 0: f=LayoutOne.newInstance(_context); break; case 1: f=LayoutTwo.newInstance(_context); break; } return f; } @Override public int getCount() { return 2; } }