多视图ViewPager不起作用

时间:2014-03-05 12:47:41

标签: android android-viewpager

在我的应用程序中,我正在尝试实现多视图View Pager。我正在使用this文章中的最后一个想法。唯一的区别是我将PagerContainer的相对布局添加到LinearLayout,这是PopupWindow的基本布局。但我不能让它工作 - ViewPager只显示一页,我不知道我的错误在哪里。这是我的代码:

viewpager_layout.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content">

    <com.componentix.imwizard.PagerContainer
        android:id="@+id/pager_container"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="#CCC">
        <android.support.v4.view.ViewPager
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_gravity="center_horizontal" />
    </com.componentix.imwizard.PagerContainer>

</RelativeLayout>

SamplePagerAdapter.java

public class SamplePagerAdapter extends PagerAdapter{

    List<ImageView> pages = null;

    public SamplePagerAdapter(List<ImageView> pages){
        this.pages = pages;
    }

    @Override
    public Object instantiateItem(ViewGroup container, int position){
        View v = pages.get(position);
        //((ViewPager) collection).addView(v, 0);
        container.addView(v);
        return v;
    }

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

    @Override
    public int getCount(){
        return pages.size();
    }

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

主要活动的相关代码

popupLayout = new LinearLayout(context);
LayoutInflater ltInflater = getLayoutInflater();
RelativeLayout rl = (RelativeLayout)ltInflater.inflate(R.layout.viewpager_layout, null);
PagerContainer pagerContainer = (PagerContainer)(rl.getChildAt(0));
ViewPager viewPager = pagerContainer.getViewPager();
SamplePagerAdapter pagerAdapter = new SamplePagerAdapter(imageViewsWithScreenshots);
viewPager.setAdapter(pagerAdapter);
viewPager.setOffscreenPageLimit(pagerAdapter.getCount());
viewPager.setPageMargin(15);
viewPager.setClipChildren(false);
viewPager.setCurrentItem(imageIndex);
popupLayout.addView(rl);
LinearLayout.LayoutParams nlp= new LinearLayout.LayoutParams(400, 600);
rl.setLayoutParams(nlp);
popupWindow = new PopupWindow(popupLayout,
                RelativeLayout.LayoutParams.WRAP_CONTENT,
                RelativeLayout.LayoutParams.WRAP_CONTENT);
popupWindow.showAtLocation(mainLayout, Gravity.CENTER, 0, 0);

有什么想法吗?

0 个答案:

没有答案