在ViewPager的选项卡中增加的Page多余3个,如果在添加MapView的Page和间隔一个Page的那个Page直接切换,会导致地图的Page中的MapView显示黑色,代码如下:
LayoutInflater inflater = getLayoutInflater(); //第一个普通的Page view1 = inflater.inflate(R.layout.raininfo_page_1, null); view2 = inflater.inflate(R.layout.raininfo_page_2, null); //带有MapView的Page view3 = inflater.inflate(R.layout.raininfo_page_3, null); views.add(view1); views.add(view2); views.add(view3); viewPager.setAdapter(new MyViewPagerAdapter(views)); viewPager.setCurrentItem(0); viewPager.setOnPageChangeListener(new MyOnPageChangeListener());
MyViewPagerAdapter的代码:
@Override public void destroyItem(ViewGroup container, int position, Object object) { container.removeView(mListViews.get(position)); } @Override public Object instantiateItem(ViewGroup container, int position) { container.addView(mListViews.get(position), 0); return mListViews.get(position); } @Override public int getCount() { return mListViews.size(); }
代码运行后,初始显示第一个Page,如果在第一个Page和第三个Page直接切换,就回发现,MapView会一直显示黑色。解决的办法,就是每次Adapter调用instantiateItem时重新生成加入MapView所在的Page
代码如下(先加入Page1和Page2):
view1 = inflater.inflate(R.layout.raininfo_page_1, null); view2 = inflater.inflate(R.layout.raininfo_page_2, null); views.add(view1); views.add(view2);
MyViewPagerAdapter的代码(在Adapter的instantiateItem调用时加入Page3):
@Override public void destroyItem(ViewGroup container, int position, Object object) { container.removeView((View) object); } @Override public Object instantiateItem(ViewGroup container, int position) { if(position==2){ LayoutInflater inflater = getLayoutInflater(); view3 = inflater.inflate(R.layout.raininfo_page_3, null); stationSpreadPage=new RainInfoStationSpreadPage(RainInfoActivity.this,view3); container.addView(view3, 0); return view3; }else{ container.addView(mListViews.get(position), 0); return mListViews.get(position); } } @Override public int getCount() { return mListViews.size()+1; }
程序运行后,切换正常
相关推荐
使用ViewPager + Fragment实现滑动切换页面的简单样例
自定义ViewPager (禁止滑动和去除切换效果) viewPager.setNoScroll(true);//禁止手动滑动
ViewPager动态添加View , 非常简单使用的Demo , 简单易懂
viewpager切换动画与时长控制
MapViewPager, 将 ViewPager Fragments 与 谷歌地图 标记连接的Android库 MapViewPager将 ViewPager Fragments 与 谷歌地图 标记连接的Android库。 查看英镑的示例 apk !通知还没有完全测试,但它在运行 ...
android ViewPager实现动态添加View对象,demo用了2种方式实现,一种是点击动态添加 一种是滑动时动态添加 2种方式测试都能成功。 欢迎对android感兴趣的朋友技术交流。本人QQ 351531626 添加QQ请带上说明哦 =。=
ActionBar.Tab 与 ViewPager关联使用,支持点击tab切换页面和滑动切换页面。
用户通过点击动作在ViewPager中添加或删除ViewPager页面的演示实例
ViewPager实现网络图片切换显示 显示网络图片动态切换 左右换的 点点指示显示第几种图
viewpager实现图片切换
用Fragment+Viewpager+BottomNavigationView实现界面切换,界面只有三个Fragment,可自行添加修改
ViewPager很好的切换图片及自动切换图片,在项目中运用过,挺好的,值得学习。
所谓动态添加,就是viewpager中有多个view,然后每个view中又有很多item,每个view相应的会有一个小圆点指示器;view、小圆点是根据实际数据的个数以及每页的item数动态生成的。
Android Studio使用ViewPager+Fragment实现仿微信滑动切换界面
ViewPager和Fragment一起实现底部菜单切换的滑屏功能
viewpager自添加指示器,无限轮播
android viewpager实现微信tab简单切换
利用ViewPager在android中实现试图切换
ViewPager实现图片 小圆点切换