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

我早就把這個評論,但我沒有足夠的代表

相關問題