Android Market / Google Music似乎能够在ViewPager
中包含的不同片段之间存在某种差距。
知道如何做到这一点?向实际片段视图添加边距/填充不起作用,因为视图仍然需要占据屏幕的整个宽度。只有在轻扫ViewPager时才能看到“间隙”。
答案 0 :(得分:115)
在Support Package, r4中,您可以使用以下方法:
setPageMargin(int marginPixels)
setPageMarginDrawable(Drawable)
setPageMarginDrawable(int)
ViewPager课程中的。
我不知道为什么这在XML中没有等价物: - (
如果您需要使用dip单位,您可以使用此方法:
public static int convertDip2Pixels(Context context, int dip) {
return (int)TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, dip, context.getResources().getDisplayMetrics());
}
答案 1 :(得分:22)
希望这可以帮助拥有 ViewPager 和页边距的人。
我希望 ViewPager 是 CardView ,并且在填充和viewpager页面之间的边距方面存在问题。 setPageMargin对我来说根本不起作用。我不得不使用以下内容:
int pagerPadding = 16;
pager.setClipToPadding(false);
pager.setPadding(pagerPadding, 0, pagerPadding, 0);
这使页面非常接近。
答案 2 :(得分:4)
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));
}
答案 3 :(得分:1)
pager.setClipToPadding(假); pager.setPadding(左,0,右,0); 如果在viewpager中需要两个页面之间的空格,则添加 pager.setPageMargin(INT);
答案 4 :(得分:1)
试试这个。
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 :(得分:0)
试试这个
viewPager.setClipToPadding(false);
viewPager.setOffscreenPageLimit(2);
viewPager.setPadding(20, 0, 20, 0);
答案 6 :(得分:0)
这是示例解决方案:
在您使用ViewPager的活动或片段中实现ViewPager.OnPageChangeListener
@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;
}
最后,标题片段之间会有一个空白