Подтвердить что ты не робот

Android ViewPager отступы/разметка между фрагментами страницы

Android Market/Google Music, похоже, может иметь некоторый пробел между различными фрагментами, содержащимися в ViewPager.

Любая идея, как это делается? Добавление поля/заполнения в фактический вид фрагмента не работает, потому что представление все равно должно занимать всю ширину экрана. "Зазор" отображается только при просмотре ViewPager.

4b9b3361

Ответ 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;
}

В конце концов вы будете иметь разницу между фрагментами вашего названия