Навигационный ящик google maps v2, блок блокировки карты
У меня есть эта проблема при открытии ящика на пряничном пряжке, а позади - карта google v2. Карта, которая должна быть на экране позади, получает все.
Теперь я мог обойти это, скрывая карту, когда откроется ящик, и покажу ее, когда закрываешься, но я ищу более элегантное решение, если кто-нибудь придумал какие-нибудь?
![Map overlaying navigation drawer]()
Ответы
Ответ 1
Есть ошибка с картами google api v2 и черным пространством. Возможно, у вас есть аналогичная проблема. Для решений смотрите здесь:
https://github.com/jfeinstein10/SlidingMenu/issues/228
и здесь:
https://github.com/jfeinstein10/SlidingMenu/issues/168
Насколько я помню, решения являются одним из следующих:
- расширение Карт Google и возможность повторного его перерисовывания
- установить значение индекса z в верхнем параметре в true
- Положить прозрачный накладной над видом Google Карт
Ответ 2
Просто оберните SupportMapFragment с помощью FrameLayout и поставьте прозрачный вид выше:
<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 - отлично работает для меня
Ответ 3
У меня такая же проблема здесь, в ICS 4.0.4. Решения, упомянутые в jjeinstein10 github post, не работают для меня. Но я нашел обходное решение, даже это не самое лучшее.
При создании объекта 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 избавится от тени. Жаль, что я не нашел обходного пути, чтобы правильно отобразить тень. Надеюсь, это поможет.
Ответ 4
Вы должны переопределить функцию 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);
}
};