2013-07-18 28 views
17

Ho questo problema quando apro il cassetto sul pan di zenzero e dietro c'è google map v2. La mappa che dovrebbe essere sullo schermo dietro si riempie di tutto.cassetto di navigazione google maps v2, cassetto di blocco mappe

Ora posso aggirare questo nascondendo la mappa quando il cassetto si apre e lo mostra quando si chiude, ma sto cercando una soluzione più elegante se qualcuno ne ha idea?

Map overlaying navigation drawer

risposta

7

c'è un bug con google maps api v2 e lo spazio nero. Forse hai un problema simile. Per soluzioni guarda qui: https://github.com/jfeinstein10/SlidingMenu/issues/228 e qui: https://github.com/jfeinstein10/SlidingMenu/issues/168

Per quanto mi ricordo le soluzioni sono uno di questo:

  • estensione di Google Maps e renderlo al ridisegnare ogni vista più spesso
  • set indice z della mappa in cima param a true
  • sovrapposizione trasparente su Google Maps view
+2

sovrapposizione trasparente su Google Maps guarda, lavora per me. –

6

Ho lo stesso problema qui su ICS 4.0.4. Le soluzioni menzionate nel post github di jfeinstein10 non sembrano funzionare per me. Ma ho trovato una soluzione alternativa, anche se non è la migliore.

Quando si crea oggetto DrawerToggle sovrascrivo questo evento

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

} 

bringChildToFront e requestLayout metodo dovrebbe superare il cassetto di rendering problema durante setScrimColor sbarazzarsi dell'ombra. Peccato che non abbia trovato una soluzione alternativa per il rendering dell'ombra correttamente. Spero che questo ti aiuti.

+0

Perfetto funzionamento grazie: D – Spl2nky

13

Basta avvolgere SupportMapFragment con FrameLayout e mettere trasparente Visualizza sopra in questo modo:

<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" /> 

Testato con Android 4.0.4 - funziona bene per me

+0

Nel mio caso, l'aggiunta di una vista trasparente al layout esistente, subito dopo il frammento di una mappa, ha funzionato come un incantesimo. Solo per lo storico, questo ORIGINALMENTE funzionava bene in HTC Desire X 4.1.1, ma non funzionava con Sony 4.0.0 e HTC Desire SV 4.0.1. Ora - funziona ovunque. –

+0

Questa soluzione funziona per me ottimo +1; D – neferpitou

3

Si dovrebbe ignorare la funzione onDrawerSlide e sposta il cassetto in primo piano

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

Grazie. Risolto il mio problema con GingerBread. – Ton

Problemi correlati