2012-04-16 4 views
2

Надеюсь, что я могу показать 3 элемента на странице viewpager, но теперь я могу установить значение padding и значение маркера для viewpager, поэтому он отображает только один элемент на странице viewpager. Как установить ширину элемента? Я думаю, что если я могу установить меньшую ширину элемента, viewpager отобразит больше элементов на странице.Могу ли я установить ширину элемента viewpager?

ответ

3

Вы пытались установить значения полей на отрицательное значение, см. setPageMargin(int)? Если я правильно помню, я читал, что кто-то понимает нечто похожее на то, что вы так описываете.

В качестве альтернативы, вы можете взглянуть на использование Gallery вместо этого, хотя я должен признать, что я не большой поклонник их, поскольку они кажутся менее гибкими и более багги.

+0

Спасибо за ваш ответ, я попробую. Я не могу использовать галерею, потому что мне нужно добавить список в родительский вид, для галереи есть некоторые проблемы. –

+0

Благодарим вас, это достигается вашим провидением. –

+0

Это приводит к неприкосновению части слайдов, поскольку элемент перед ними перекрывает их. –

4

Быстрый ответ

Что вы хотите, перекрывая getPageWidth в PagerAdapter реализации вы сделали для этого ViewPager.

Например, установив его на 0.8f, вы сделаете обложку одной страницы только 80% ширины просмотров, чтобы отображалась часть следующей и/или предыдущей страниц.

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

Более подробная информация на https://developer.android.com/reference/android/support/v4/view/PagerAdapter.html#getPageWidth(int)

Другие замечания

Также обратите внимание, что отрицательные поля будут вызывать только отдельные страницы, чтобы перекрывать друг друга. Маржа используется для определения пространства между каждой страницей.

Если альтернативный pageWidth не настроен (нет сеттера, только переопределение), он будет покрывать 100% по умолчанию, не делая видимой части других страниц, кроме тех, которые были перетащены.

Пример кода

Очень хороший обзор того, что можно можно найти здесь 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

Полезная ссылка (вторая) действительно помогает! –

Смежные вопросы