Подтвердить что ты не робот

Навигационный ящик google maps v2, блок блокировки карты

У меня есть эта проблема при открытии ящика на пряничном пряжке, а позади - карта google v2. Карта, которая должна быть на экране позади, получает все.

Теперь я мог обойти это, скрывая карту, когда откроется ящик, и покажу ее, когда закрываешься, но я ищу более элегантное решение, если кто-нибудь придумал какие-нибудь?

Map overlaying navigation drawer

4b9b3361

Ответ 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);

                        }
                    };