Android市场/谷歌音乐似乎能够在包含于ViewPager
中的不同片段之间留有一定的间隙。
有什么想法是如何完成这个效果的吗?将间距/填充添加到实际片段视图上并不起作用,因为该视图仍然需要占据整个屏幕的宽度。当滑动ViewPager时,“间隙”才会显示出来。
Android市场/谷歌音乐似乎能够在包含于ViewPager
中的不同片段之间留有一定的间隙。
有什么想法是如何完成这个效果的吗?将间距/填充添加到实际片段视图上并不起作用,因为该视图仍然需要占据整个屏幕的宽度。当滑动ViewPager时,“间隙”才会显示出来。
在支持包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());
}
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));
}
试一下这个。
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);
如果您需要在ViewPager中的两个页面之间添加间距,则可以使用以下方法:
pager.setClipToPadding(false);
pager.setPadding(left,0,right,0);
然后添加以下代码:
pager.setPageMargin(int);
试试这个
viewPager.setClipToPadding(false);
viewPager.setOffscreenPageLimit(2);
viewPager.setPadding(20, 0, 20, 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;
}
最终,您的标题片段之间将有一个边距