2012-04-16 10 views
2

viewpagerのページに3つのアイテムを表示することができますが、viewpagerのパディング値とマージン値のみを設定できるので、ビューページのページに1つのアイテムしか表示されません。商品の幅はどのように設定できますか?私はアイテムの幅をもっと小さくすることができれば、ビューページはページにもっと多くのアイテムを表示すると思います。ビューページャのアイテム幅を設定できますか?

答えて

3

ページの余白を負の値に設定しようとしましたか?setPageMargin(int)を参照してください。私が正しく覚えていれば、あなたがそのように記述しているものに似た何かを実現する人を読んでいます。

Galleryを代わりに使ってみることもできますが、柔軟性が低くバグが多いようですが、私は彼らの大ファンではないと認めなければなりません。

+0

回答をいただきありがとうございます。親ビューにリストを追加する必要があるためギャラリーを使用できません。ギャラリーには問題があります。 –

+0

ありがとう、あなたの理想によって達成されました。 –

+0

これは、スライドの一部が手で触れることができないようにします。その前の項目は重複するため、 –

4

クイック回答

何が欲しいのはあなたがそのViewPagerのために作られたPagerAdapter実装でgetPageWidthをオーバーライドしています。

たとえば、これを0.8fに設定すると、次のページおよび/または前のページの一部が表示されるように、1ページだけがビューページの幅の80%をカバーします。 https://developer.android.com/reference/android/support/v4/view/PagerAdapter.html#getPageWidth(int)

他の発言

@Override 
public float getPageWidth(final int position) { 
    return 0.8f; 
} 

詳しい情報はまた、負のマージンが唯一の別のページが重なってしまいますので注意してください。マージンは、各ページ間のスペースを定義するために使用されます。

代替ページ幅が設定されていない(セッターはなく、オーバーライドのみ)場合は、デフォルトで100%をカバーし、ドラッグされない限り他のページの部分は表示されません。何ができるかの

コード例

A非常に素晴らしい概要は、あなたのレイアウトで、ここhttps://commonsware.com/blog/2012/08/20/multiple-view-viewpager-options.html

ビューページャインライン構成されたアダプタ実装の

<android.support.v4.view.ViewPager 
    android:id="@+id/viewpager" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 
</android.support.v4.view.ViewPager> 

例を見つけることができ、これは希望onCreateメソッドまたはonViewCreatedメソッドに入ります。

// get a reference to the viewpager in your layout 
ViewPager mViewPager = (ViewPager) findViewById(R.id.viewpager); 
// this margin defines the space between the pages in the viewpager mViewPager.setPageMargin(context.getResources().getDimensionPixelSize(R.dimen.margin_normal)); 
// setting the adapter on the viewpager, this could/should be a proper Adapter implementation in it's own class file instead 
mViewPager.setAdapter(new PagerAdapter() { 

    // just example data to show, 3 pages 
    String[] titles = {"Eins", "Zwei", "Drei"}; 
    int[] layouts = {R.layout.layout1, R.layout.layout2, R.layout.layout3}; 

    @Override 
    public Object instantiateItem(ViewGroup container, int position) { 
     LayoutInflater inflater = LayoutInflater.from(MainActivity.this); 
     // here you can inflate your own view and dress up 
     ViewGroup layout = (ViewGroup) inflater.inflate(layouts[position], container, false); 
     container.addView(layout); 
     return layout; 
    } 

    @Override 
    public void destroyItem(ViewGroup container, int position, Object object) { 
     container.removeView((View)object); 
    } 

    @Override 
    public float getPageWidth(final int position) { 
     return 0.8f; 
    } 

    @Override 
    public CharSequence getPageTitle(int position) { 
     return titles[position]; 
    } 

    @Override 
    public int getCount() { 
     return layouts.length; 
    } 

    @Override 
    public boolean isViewFromObject(View view, Object object) { 
     return view == object; 
    } 
}); 

例のコードはhttps://newfivefour.com/android-viewpager-simple-views.html

+0

コモンウェアリンク(2番目のもの)が助けになります! –

関連する問題