在我的应用程序中,我正在尝试实现多视图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);
有什么想法吗?