Android Market/Google Music semblent pouvoir avoir un certain écart entre les différents fragments contenus dans le ViewPager
.
Une idée de comment cela se fait? L'ajout de marge/remplissage à la vue de fragment réelle ne fonctionne pas, car la vue doit toujours occuper toute la largeur de l'écran. L'écart n'est visible que lorsque vous faites glisser le ViewPager.
Dans Support Package, r4 vous pouvez utiliser ces méthodes:
setPageMargin(int marginPixels)
setPageMarginDrawable(Drawable)
setPageMarginDrawable(int)
dans ViewPager classe.
Je ne sais pas pourquoi cela n'a pas d'équivalent en XML :-(
Si vous avez besoin d'utiliser l'unité d'immersion, vous pouvez utiliser cette méthode:
public static int convertDip2Pixels(Context context, int dip) {
return (int)TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, dip, context.getResources().getDisplayMetrics());
}
En espérant que cela pourrait aider quelqu'un avec un ViewPager et des marges de page.
Je voulais avoir un ViewPager est un CardView et j'ai eu des problèmes avec le le rembourrage et la marge entre les pages du viseur. Le setPageMargin ne fonctionnait pas du tout pour moi. J'ai dû utiliser ce qui suit:
int pagerPadding = 16;
pager.setClipToPadding(false);
pager.setPadding(pagerPadding, 0, pagerPadding, 0);
Cela permet aux pages d'être très rapprochées.
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));
}
Essaye ça .
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);
pager.setClipToPadding (false); pager.setPadding (gauche, 0, droite, 0); Si vous avez besoin d'espace entre deux pages dans le viewpager, ajoutez pager.setPageMargin (int);
Essaye ça
viewPager.setClipToPadding(false);
viewPager.setOffscreenPageLimit(2);
viewPager.setPadding(20, 0, 20, 0);
voici un exemple de solution:
implémenter le ViewPager.OnPageChangeListener
dans votre activité ou votre fragment où vous utilisez le 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 est la disposition du tableau dans votre activité ou fragment
@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;
}
vous aurez enfin une marge entre vos fragments de titre