141

私はAndroidのを使用してViewPagerいます。私がやりたいことは、ページのプレビューを左右両方に表示することです。pageMarginネガを使用して右側のプレビューを表示できる場所を見てきました。

setPageMargin(-100);

左側のプレビューも表示できる方法はありますか? 基本的には、私が探しているギャラリー ウィジェットに似たものです。

4

14 に答える 14

216

左右のページのプレビューを表示するには、次の 2 つの値を設定します

  1. viewpager.setClipToPadding(false);
  2. viewpager.setPadding(left,0,right,0);

ビューページャーの 2 つのページ間にスペースが必要な場合は、追加します

viewpager.setPageMargin(int);
于 2014-04-29T05:14:23.303 に答える
81

@JijuInduchoodanによる答えは完璧で機能しています。しかし、私はAndroidに比較的慣れていないので、理解して適切に設定するのに時間がかかりました. そのため、将来の参考のためにこの回答を投稿し、私と同じ靴を履いている他の人を助けます。

if (viewPager == null) 
        {

            // Initializing view pager
            viewPager = (ViewPager) findViewById(R.id.vpLookBook);

            // Disable clip to padding
            viewPager.setClipToPadding(false);
            // set padding manually, the more you set the padding the more you see of prev & next page
            viewPager.setPadding(40, 0, 40, 0);
            // sets a margin b/w individual pages to ensure that there is a gap b/w them
            viewPager.setPageMargin(20);
        }

ViewPager'sアダプターでページに幅を設定する必要はありません。で前のページと次のページを表示するために必要な追加のコードはありませんViewPager。ただし、各ページの上下に空白を追加したい場合は、次のコードをViewPager's子ページの親レイアウトに設定できます。

android:paddingTop="20dp"
android:paddingBottom="20dp"

Final ViewPager

これが ViewPager の最終的な外観になります。

于 2015-12-11T06:52:12.073 に答える
-12

このフラグメント アダプターとクラスを使用して、viewpager を左右のスクロールで表示します。スクロールして次のページを表示するために必要なクラスを追加します。

package com.rmn.viewpager;

import java.util.List;

import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;

/**
 * The <code>PagerAdapter</code> serves the fragments when paging.
 * @author mwho
 */
public class PagerAdapter extends FragmentPagerAdapter {

    private List<Fragment> fragments;
    /**
     * @param fm
     * @param fragments
     */
    public PagerAdapter(FragmentManager fm, List<Fragment> fragments) {
        super(fm);
        this.fragments = fragments;
    }
    /* (non-Javadoc)
     * @see android.support.v4.app.FragmentPagerAdapter#getItem(int)
     */
    @Override
    public Fragment getItem(int position) {
        return this.fragments.get(position);
    }

    /* (non-Javadoc)
     * @see android.support.v4.view.PagerAdapter#getCount()
     */
    @Override
    public int getCount() {
        return this.fragments.size();
    }
}



package com.manishkpr.viewpager;


import android.content.Context;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;

public class ViewPagerAdapter extends FragmentPagerAdapter {
    private Context _context;

    public ViewPagerAdapter(Context context, FragmentManager fm) {
        super(fm);  
        _context=context;

        }
    @Override
    public Fragment getItem(int position) {
        Fragment f = new Fragment();
        switch(position){
        case 0:
            f=LayoutOne.newInstance(_context);  
            break;
        case 1:
            f=LayoutTwo.newInstance(_context);  
            break;
        }
        return f;
    }
    @Override
    public int getCount() {
        return 2;
    }

}
于 2012-11-05T07:12:18.520 に答える