Android ViewPager отступы/разметка между фрагментами страницы
Android Market/Google Music, похоже, может иметь некоторый пробел между различными фрагментами, содержащимися в ViewPager
.
Любая идея, как это делается? Добавление поля/заполнения в фактический вид фрагмента не работает, потому что представление все равно должно занимать всю ширину экрана. "Зазор" отображается только при просмотре ViewPager.
Ответы
Ответ 1
В Пакет поддержки, r4 вы можете использовать следующие методы:
setPageMargin(int marginPixels)
setPageMarginDrawable(Drawable)
setPageMarginDrawable(int)
в ViewPager class.
Я не знаю, почему это не имеет эквивалента в XML: - (
Если вам нужно использовать dip-модуль, вы можете использовать этот метод:
public static int convertDip2Pixels(Context context, int dip) {
return (int)TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, dip, context.getResources().getDisplayMetrics());
}
Ответ 2
Надеясь, что это может помочь кому-то с ViewPager и полями страницы.
Я хотел, чтобы ViewPager был CardView и имел проблемы с заполнением и полями между страницами viewpager. SetPageMargin не работал у меня вообще. Мне пришлось использовать следующее:
int pagerPadding = 16;
pager.setClipToPadding(false);
pager.setPadding(pagerPadding, 0, pagerPadding, 0);
Это позволяет страницам быть очень близко друг к другу.
![Пример просмотра с небольшим отрывом между страницами.]()
Ответ 3
viewPager.setPageMargin(dpToPx(10));
// replace 10 with the value you want for margin in dp.
public int dpToPx(int dp) {
DisplayMetrics displayMetrics = getActivity().getResources().getDisplayMetrics();
return Math.round(dp * (displayMetrics.xdpi / DisplayMetrics.DENSITY_DEFAULT));
}
Ответ 4
Попробуйте это.
ViewPager viewPager = (ViewPager) findViewById(R.id.h_view_pager);
viewPager.setClipToPadding(false);
viewPager.setPadding(60, 0, 60, 0);
viewPager.setPageMargin(20);
ImagePagerAdapter adapter = new ImagePagerAdapter();
viewPager.setOffscreenPageLimit(adapter.getCount());
viewPager.setAdapter(adapter);
Ответ 5
pager.setClipToPadding(ложь);
pager.setPadding(слева, 0, вправо, 0);
Если вам нужно пространство между двумя страницами в viewpager, тогда добавьте
pager.setPageMargin(целое);
Ответ 6
Попробуйте это
viewPager.setClipToPadding(false);
viewPager.setOffscreenPageLimit(2);
viewPager.setPadding(20, 0, 20, 0);
Ответ 7
Вот пример решения:
ViewPager.OnPageChangeListener
в свою деятельность или свой фрагмент, где вы используете ViewPager
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
int tabStripChildCount = mTabStrip.getChildCount();
for (int i=0 ; i < tabStripChildCount ; i++){
View view = mTabStrip.getChildAt(i);
ViewGroup.MarginLayoutParams p = (ViewGroup.MarginLayoutParams) view.getLayoutParams();
p.setMargins(0, 0, 50, 0);
view.requestLayout();
}
mTabStrip - это макет таблицы в вашей деятельности или фрагмент
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
mSectionsPagerAdapter = new SectionsPagerAdapter(getChildFragmentManager());
View view = inflater.inflate(R.layout.patient_activity__fragment_tab_viewer, container, false);
mViewPager = (ViewPager) view.findViewById(R.id.viewPager);
mViewPager.setAdapter(mSectionsPagerAdapter);
mTabStrip = (SlidingTabLayout) view.findViewById(R.id.tabs);
mTabStrip.setViewPager(mViewPager);
return view;
}
В конце концов вы будете иметь разницу между фрагментами вашего названия