navigation drawer google maps v2 , map blocking drawer

前端 未结 4 1040
走了就别回头了
走了就别回头了 2020-12-29 06:54

I have this problem when opening drawer on gingerbread and behind is google map v2. Map that should be on screen behind gets on top of everything.

Now I could bypas

相关标签:
4条回答
  • 2020-12-29 07:38

    There is a bug with google maps api v2 and black space. Maybe you have got similar problem. For solutions look here: https://github.com/jfeinstein10/SlidingMenu/issues/228 and here: https://github.com/jfeinstein10/SlidingMenu/issues/168

    As far as I remember solutions are one of this:

    • extending Google Maps and make it to redraw every view more often
    • set map's z index on top param to true
    • put transparent overlay over Google Maps view
    0 讨论(0)
  • 2020-12-29 07:44

    I have got the same problem here on ICS 4.0.4. The solutions mentioned in jfeinstein10's github post seems not working for me. But I have found a workaround, even it is not the best.

    When creating DrawerToggle object I override this event

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

    bringChildToFront and requestLayout method should overcome the drawer rendering problem while setScrimColor will get rid of the shadow. Too bad that I haven't found a workaround to render the shadow correctly as well. Hope this helps.

    0 讨论(0)
  • 2020-12-29 07:44

    You should override the onDrawerSlide function and move the drawer to front

     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);
    
                            }
                        };
    
    0 讨论(0)
  • 2020-12-29 07:45

    Just wrap SupportMapFragment with FrameLayout and put transparent View above like this:

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

    Tested with Android 4.0.4 - works fine for me

    0 讨论(0)
提交回复
热议问题