`
yangwei0915
  • 浏览: 465222 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

ViewPager中添加百度地图MapView,Page切换时地图显示黑屏问题

 
阅读更多

在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切换动画

    在Android开发中,ViewPager是一个非常常用的组件,它用于展示多个页面并允许用户通过滑动来切换页面。在本文中,我们将深入探讨ViewPager的切换动画,特别是标题提到的“三种ViewPager切换动画”。首先,我们理解...

    ViewPager 动态添加 View

    在这个"ViewPager动态添加View"的示例中,我们将深入探讨如何在运行时动态地向ViewPager中添加新的View。 首先,我们从基础开始。ViewPager是Android Support Library的一部分,它允许用户通过手势或编程方式在多个...

    Android ViewPager和Fragment 实现滑动切换页面

    最后,我们在Activity中初始化`ViewPager`,设置适配器,并可能需要添加指示器(如`TabLayout`)来显示当前页面。 ```java ViewPager viewPager = findViewById(R.id.view_pager); MyPagerAdapter adapter = new ...

    viewpager切换动画与时长控制

    本教程将深入讲解如何在ViewPager中实现切换动画以及对动画时长进行控制。 首先,我们需要了解ViewPager的基本用法。ViewPager通过PagerAdapter来管理其内部的页面,PagerAdapter需要继承自PagerAdapter类,并重写`...

    自定义ViewPager (禁止滑动和去除切换效果)

    自定义ViewPager (禁止滑动和去除切换效果) viewPager.setNoScroll(true);//禁止手动滑动

    ViewPager切换图片及自动切换图片

    此外,还可以利用ViewPager的`addOnPageChangeListener`方法添加页面改变监听器,实现更丰富的交互效果,比如在图片切换时显示或隐藏底部的指示点,或者播放特定的动画。 在实际应用中,你可能还需要考虑一些优化...

    ViewPager+GridView实现宫格横向滑动切换

    1. **设置ViewPager**:首先,在XML布局文件中添加`ViewPager`,并为其指定一个适配器。这个适配器需要继承`PagerAdapter`,重写`getCount()`返回宫格的总页数,以及`instantiateItem(ViewGroup container, int ...

    android ViewPager动态添加View

    当需要根据用户操作或特定条件动态地添加或删除页面时,就需要掌握如何在ViewPager中实现动态加载View。以下是对"android ViewPager动态添加View"这一主题的详细解释。 首先,ViewPager本身并不直接支持动态添加或...

    动态添加viewpager中的item以及小圆点指示器

    6. **动态添加小圆点**:当`ViewPager`的页面增加时,检查当前小圆点的数量是否足够,如果不足,则创建新的小圆点并添加到容器中。同时,确保选中正确的小圆点,即新添加页面的位置。 7. **优化性能**:在处理大量...

    Android ViewPager切换的七种动画

    Android ViewPager切换的七种动画,分别是:深入浅出,立方体,旋转,左右折叠,右上角进入,右下角进入和淡入淡出。

    用Fragment+Viewpager+BottomNavigationView实现界面切换

    在Activity中,使用`BottomNavigationView.OnNavigationItemSelectedListener`监听菜单项的点击事件,并在`onNavigationItemSelected`方法中根据选中的菜单项更新`ViewPager`当前显示的`Fragment`。 6. **连接...

    ViewPager和Fragment一起实现底部菜单切换的滑屏功能

    3. **关联ViewPager和PagerAdapter**:将`PagerAdapter` 设置到`ViewPager` 的`setAdapter()` 方法中,这样`ViewPager` 就知道如何加载和切换页面了。 4. **底部菜单栏实现**:可以使用`BottomNavigationView` 或...

    Android实现头部切换页(Fragment+viewPager)

    在Android应用开发中,"头部切换页"是一种常见的设计模式,用于展示多个相关内容板块,并允许用户在这些板块之间轻松切换。通常,这种效果是通过结合`Fragment`和`ViewPager`来实现的。`Fragment`代表界面的一个可...

    listview添加头部viewpager

    标题"listview添加头部viewpager"所指的就是在ListView中添加一个由ViewPager构成的头部视图,这样用户可以在浏览列表时,通过滑动头部的ViewPager查看更多的相关内容。下面将详细讲解如何实现这一功能。 首先,...

    ViewPager实现的切换动画

    首先,ViewPager的核心功能是显示和切换多个Fragment或View,它可以自动处理用户的滑动手势,使得用户能够平滑地在不同的页面间切换。它的主要优点在于提供了一种优雅的方式,让用户在多个内容之间进行交互,而无需...

    MapViewPager, 将 ViewPager Fragments 与 谷歌地图 标记连接的Android库.zip

    MapViewPager, 将 ViewPager Fragments 与 谷歌地图 标记连接的Android库 MapViewPager将 ViewPager Fragments 与 谷歌地图 标记连接的Android库。 查看英镑的示例 apk !通知还没有完全测试,但它在运行 ...

    viewpager实现图片切换

    在Android开发中,ViewPager是一种非常常用的组件,它允许用户通过左右滑动来浏览多个页面,通常用于实现轮播图、页面切换等效果。本教程将详细介绍如何使用ViewPager实现图片切换的功能。 首先,我们需要理解...

    Android ViewPager多页面滑动切换以及动画效果

    在Android开发中,ViewPager是一个非常重要的组件,它用于展示多个页面并允许用户通过左右滑动来切换页面。这个组件在创建动态、交互丰富的应用时尤为有用。本篇将深入探讨如何实现Android ViewPager的多页面滑动...

    ViewPager实现五页面滑动切换

    在Android开发中,ViewPager是一个非常重要的组件,常用于实现页面间的滑动切换效果,比如在应用的引导页、Tab切换等场景。本教程将详细讲解如何利用ViewPager实现五页面的滑动切换,让读者深入了解这一功能的实现...

    ActionBar的tab + ViewPager 同时支持点击切换和滑动切换页面

    在Android开发中,`ActionBar`和`ViewPager`是两个非常重要的组件,它们分别用于实现界面导航和页面平滑切换。本篇文章将详细讲解如何利用`ActionBar`的`Tab`功能和`ViewPager`来构建一个既支持点击切换又支持滑动...

Global site tag (gtag.js) - Google Analytics