Androidマーケット/ Googleミュージックでは、ViewPager
に含まれるさまざまなフラグメント間に何らかのギャップを設けることができるようです。
これがどのように行われるか考えていますか?ビューが画面の幅全体を占有する必要があるため、実際のフラグメントビューにマージン/パディングを追加しても機能しません。 「ギャップ」は、ViewPagerをスワイプしたときにのみ表示されます。
サポートパッケージ、r4 では、次のメソッドを使用できます。
setPageMargin(int marginPixels)
setPageMarginDrawable(Drawable)
setPageMarginDrawable(int)
in ViewPager クラス。
私はこれがXMLで同等のものを持たない理由がわかりません:-(
ディップユニットを使用する必要がある場合は、次の方法を使用できます。
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);
pager.setClipToPadding(false); pager.setPadding(left、0、right、0);ビューページャーの2つのページ間にスペースが必要な場合は、pager.setPageMargin(int);を追加します。
これを試して
viewPager.setClipToPadding(false);
viewPager.setOffscreenPageLimit(2);
viewPager.setPadding(20, 0, 20, 0);
サンプルソリューションを次に示します。
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;
}
最後に、タイトルフラグメント間にマージンがあります