1

我在将旧的Google Nexus One与新的SupportMapFragment混合时遇到一些问题。Nexus One中的SupportMapFragment

在特定横向视图我有一个HorizontalScrollView地图你必须以实际看到的信息,以滚动的方式一些信息

的问题是,滚动品牌(不知何故,我无法理解现在)的SupportMapFragment的背景中可以看到(这似乎是默认黑色),而实际上滚动整个视图

图片显示我的意思。

Behaviour demo

Altough不完全相同的问题,也有类似的,报告的bug,它在gmaps-api-issues


所以,我到目前为止已经进行了测试:

  • 将背景设置为@color/transparent,即使以XML和/或以编程方式。
  • 更改SupportMapFragment Z排序

之前设置此代码打电话给我的地图:

GoogleMapOptions op = new GoogleMapOptions(); 
op.zOrderOnTop(true); 
SupportMapFragment.newInstance(op); 

所以我跑出的想法。 我已经成功地测试了完全相同的代码:

  • Galaxy Nexus
  • HTC Desire HD
  • Samsung Galaxy S3
  • Samsung Galaxy Mini
  • Galaxy Ace

编辑:一个有趣的事情是,采取截图让我意识到这是imp可以捕捉我的具体情况。当截图被拍摄时,错误只能通过再次改变为肖像和风景来再现。

任何想法?我错过了什么明显的?

在此先感谢您的意见。

+1

这[文章](http://stackoverflow.com/q/ 13837697/1904517)听起来很相似,所以可能会帮助 – iagreen

回答

4

我有一个very similar issue但是当我加入SlidingMenu library,我用劈on this comment

固定它
public class MyMapFragment extends SupportMapFragment() { 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
     View view = super.onCreateView(inflater, container, savedInstanceState); 
     setMapTransparent((ViewGroup) view); 
     return view; 
    }; 

    private void setMapTransparent(ViewGroup group) { 
     int childCount = group.getChildCount(); 
     for (int i = 0; i < childCount; i++) { 
     View child = group.getChildAt(i); 
     if (child instanceof ViewGroup) { 
      setMapTransparent((ViewGroup) child); 
     } else if (child instanceof SurfaceView) { 
      child.setBackgroundColor(0x00000000); 
     } 
    } 
} 
+0

的确,这解决了我的问题。 Thx分享知识! –

0

我想补充罗伯特Estivill的答案 - 它可能是最好不要运行在设备上的代码> = 4.1,因为它们没有问题。

稍作修改的版本:

public class FixMapFragment extends SupportMapFragment { 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
     View view = super.onCreateView(inflater, container, savedInstanceState); 

     // Fix for black background on devices < 4.1 
     if (android.os.Build.VERSION.SDK_INT < android.os.Build.VERSION_CODES.JELLY_BEAN){ 
      setMapTransparent((ViewGroup) view); 
     } 
     return view; 
    } 

    private void setMapTransparent(ViewGroup group) { 
     int childCount = group.getChildCount(); 
     for (int i = 0; i < childCount; i++) { 
      View child = group.getChildAt(i); 
      if (child instanceof ViewGroup) { 
       setMapTransparent((ViewGroup) child); 
      } else if (child instanceof SurfaceView) { 
       child.setBackgroundColor(0x00000000); 
      } 
     } 
    } 
} 

我早就把这个评论,但我没有足够的代表