Intereting Posts
Ошибка Dagger2: не может быть предоставлена ​​без конструктора @Inject Как просмотреть файл общих настроек с помощью Android Studio? Как упаковать и получить доступ к дополнительным файлам внутри моего apk Как сделать поддержку панели инструментов прозрачной? Как отключить коррекцию заклинаний программно в android Как реорганизовать строковые ресурсы в файле strings.xml в Eclipse / ADT? WebView с встроенным инсталляционным запуском Controls Исключения и сбой Плагин камеры Phonegap / Cordova – как получить отметку даты / времени фото? Загрузите компоненты Android SDK для автономной установки Кнопка «Показать маршруты» в Карте Google, когда информационное окно открывается программно Обрезать видео Like whatsapp Какие форматы изображений следует использовать в приложении для Android? Текст уведомления слишком длинный и не отображается полный текст Как я могу позволить пользователю загружать файлы во внутреннее хранилище? Ручной контроль громкости клиента Bluetooth

MapFragment получает темное наложение при использовании в DialogActivity

Я пытаюсь показать MapFragment Android Maps v2 API в Activity с @android:style/Theme.DeviceDefault.Light.Dialog.NoActionBar . Это прекрасно работает. Тем не менее, карта получает темный оверлей:

диалог

Когда я меняю тему на @android:style/Theme.DeviceDefault.Light.NoActionBar , карта отображается так, как должна:

Нормальный

Это мой файл макета xml:

 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <fragment android:id="@+id/mapfragment" android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="1" class="com.google.android.gms.maps.MapFragment" /> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:text="HELLO" android:textSize="@dimen/textsize_large" /> </LinearLayout> 

Что здесь происходит?

Solutions Collecting From Web of "MapFragment получает темное наложение при использовании в DialogActivity"

У меня та же проблема. После некоторых исследований я обнаружил два взлома:

  • Добавьте этот параметр для своей темы в styles.xml:
    <item name="android:backgroundDimEnabled">false</item>

Плохая часть: он удаляет черные накладки за активность.

  • Задайте z-порядок сверху для объекта карты:
    GoogleMapOptions googleMapsOptions = new GoogleMapOptions();
    googleMapsOptions.zOrderOnTop( true );
    MapFragment mapFragment = MapFragment.newInstance(googleMapsOptions);

Плохая часть: карта находится над кнопкой Zoom и кнопкой MyLocation.

Personnaly, я выбираю первое решение.
Надеюсь эта помощь!

Ссылка на источник

Для DialogFragment :

 getDialog().getWindow().clearFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND); 

Чтобы добавить к решению Audrel , можно динамически разглашать окно диалога всякий раз, когда отображается карта, и уменьшать ее назад при исчезновении карты (например, когда ваше диалоговое окно имеет несколько страниц, одна из них – карта):

 private float mDimAmount; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); WindowManager.LayoutParams params = getWindow().getAttributes(); mDimAmount = params.dimAmount; // remember original dim amount ... } private void undim() { WindowManager.LayoutParams params = getWindow().getAttributes(); params.dimAmount = 0.0f; getWindow().setAttributes(params); } private void dim() { WindowManager.LayoutParams params = getWindow().getAttributes(); params.dimAmount = mDimAmount; getWindow().setAttributes(params); } 

Все еще просто обходное решение, а не решение первопричины …

В зависимости от вашей цели для карты в диалоговом окне, если вам не нужны какие-либо элементы управления картой, вы можете использовать liteMode в котором отображается только изображение карты с любым местоположением, которое вы загружаете. У этого нет этой проблемы с наложением слоя z.

Вы можете добавить это в макет MapView xml:

map:liteMode="true"

Это сработало для меня, потому что я не хотел, чтобы моя карта была интерактивной.

Вы можете ознакомиться с документами Google здесь: https://developers.google.com/maps/documentation/android-api/lite

Просто добавьте эту линию в свой стиль !

  <item name="android:backgroundDimEnabled">false</item> 

Это мой стиль :

 <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar"> <item name="colorPrimary">@color/colorPrimary</item> <item name="colorPrimaryDark">@color/dark</item> <item name="colorAccent">@color/colorAccent</item> <item name="android:backgroundDimEnabled">false</item> <item name="windowActionBar">false</item> </style>