2013-07-18 12 views
17

Ich habe dieses Problem beim Öffnen Schublade auf Lebkuchen und hinter ist Google Map v2. Die Karte, die auf dem Bildschirm angezeigt werden sollte, bekommt alles im Blick.Navigationsschublade google maps v2, Karte blockierende Schublade

Jetzt konnte ich das umgehen, indem ich die Karte versteckte, wenn sich die Schublade öffnet und es zeigte, wenn sie geschlossen wurde, aber ich suche nach einer eleganteren Lösung, wenn jemand etwas erfinden würde?

Map overlaying navigation drawer

Antwort

7

Es ist ein Fehler mit Google Maps api v2 und schwarzen Raum. Vielleicht hast du ähnliches Problem. Für Lösungen, schau mal hier: https://github.com/jfeinstein10/SlidingMenu/issues/228 und hier: https://github.com/jfeinstein10/SlidingMenu/issues/168

Soweit ich erinnere Lösungen eine hierfür sind:

  • erstreckt Google Maps und machen es jeden öfter
  • Set sehen neu zu zeichnen map's z index oben param to true
  • transparentes Overlay über Google Maps setzen
+2

setzen Sie eine transparente Überlagerung über Google Maps Blick, funktioniert für mich. –

6

Ich habe das gleiche Problem hier auf ICS 4.0.4. Die in jfeinstein10s Github Post genannten Lösungen scheinen bei mir nicht zu funktionieren. Aber ich habe einen Workaround gefunden, auch wenn es nicht der beste ist.

Wenn DrawerToggle Objekt erstellt ich diese Veranstaltung

@Override 
public void onDrawerSlide(View drawerView, float slideOffset) 
{ 
    super.onDrawerSlide(drawerView, slideOffset); 
    mDrawerLayout.bringChildToFront(drawerView); 
    mDrawerLayout.requestLayout(); 
    mDrawerLayout.setScrimColor(Color.TRANSPARENT); 

} 

bringChildToFront und requestLayout außer Kraft setzen Methode sollte die Schublade Rendering-Problem überwinden, während setScrimColor wird der Schatten loszuwerden. Schade, dass ich keine Problemumgehung gefunden habe, um den Schatten korrekt zu rendern. Hoffe das hilft.

+0

Working perfect danke: D – Spl2nky

13

wickeln gerade SupportMapFragment mit FrameLayout und setzen transparente Ansicht oben wie folgt aus:

<FrameLayout 
     android:layout_width="match_parent" 
     android:layout_height="match_parent"> 
     <!-- Map fragment --> 
     <fragment 
      android:id="@+id/map" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      class="com.google.android.gms.maps.SupportMapFragment" /> 
     <!-- Transparent view --> 
     <View 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" /> 

mit Android getestet 4.0.4 - funktioniert gut für mich

+0

In meinem Fall - eine transparente Sicht auf das vorhandene Layout, direkt nach dem Framing einer Karte, funktionierte wie ein Zauber. Nur um der Geschichte Willen - das ORIGINAL funktionierte ok in HTC Desire X 4.1.1, aber scheiterte auf Sony 4.0.0 und HTC Desire SV 4.0.1. Jetzt - funktioniert überall. –

+0

Diese Lösung funktioniert für mich großartig +1; D – neferpitou

3

Sie sollten die onDrawerSlide Funktion außer Kraft setzen und Verschieben Sie die Schublade nach vorne

Toolbar toolbar = (Toolbar) findViewById(R.id.tool_bar); 
    DrawerLayout Drawer = (DrawerLayout) findViewById(R.id.DrawerLayout); 
        mDrawerToggle = new ActionBarDrawerToggle(this, Drawer, toolbar, R.string.openDrawer, R.string.closeDrawer) { 

         @Override 
         public void onDrawerSlide(View drawerView, float slideOffset) 
         { 
          super.onDrawerSlide(drawerView, slideOffset); 
          Drawer.bringChildToFront(drawerView); 
          Drawer.requestLayout(); 
          Drawer.setScrimColor(Color.TRANSPARENT); 

         } 
        }; 
+1

Danke. Mein Problem mit GingerBread gelöst. – Ton