在姜饼上打开抽屉时我遇到了这个问题,后面是谷歌地图 v2。应该在屏幕后面的地图占据了一切之上。
现在我可以通过在抽屉打开时隐藏地图并在关闭时显示它来绕过这个,但是如果有人想出任何方法,我正在寻找更优雅的解决方案?
在姜饼上打开抽屉时我遇到了这个问题,后面是谷歌地图 v2。应该在屏幕后面的地图占据了一切之上。
现在我可以通过在抽屉打开时隐藏地图并在关闭时显示它来绕过这个,但是如果有人想出任何方法,我正在寻找更优雅的解决方案?
只需用 FrameLayout 包装 SupportMapFragment 并将透明 View 放在上面,如下所示:
<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" />
使用 Android 4.0.4 测试 - 对我来说很好用
谷歌地图 api v2 和黑色空间存在错误。也许你有类似的问题。有关解决方案,请查看此处: https ://github.com/jfeinstein10/SlidingMenu/issues/228 和此处: https ://github.com/jfeinstein10/SlidingMenu/issues/168
据我所知,解决方案是其中之一:
我在 ICS 4.0.4 上遇到了同样的问题。jfeinstein10 的 github 帖子中提到的解决方案似乎对我不起作用。但是我找到了一种解决方法,即使它不是最好的。
创建 DrawerToggle 对象时,我会覆盖此事件
@Override
public void onDrawerSlide(View drawerView, float slideOffset)
{
super.onDrawerSlide(drawerView, slideOffset);
mDrawerLayout.bringChildToFront(drawerView);
mDrawerLayout.requestLayout();
mDrawerLayout.setScrimColor(Color.TRANSPARENT);
}
BringChildToFront 和 requestLayout 方法应该克服抽屉渲染问题,而 setScrimColor 将摆脱阴影。太糟糕了,我还没有找到正确渲染阴影的解决方法。希望这可以帮助。
您应该覆盖 onDrawerSlide 函数并将抽屉移到前面
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);
}
};