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;
}

 程序運行後,切換正常

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章