2

Я просто перенес MapView из макета Activity в DialogFragment. Это было довольно безболезненным миграция:

Карту Android Google в FragmentDialog, наложенную собственным серым наложением Dialog

Кнопка на активности запускает диалог, установив LatLng карту необходимо:

case R.id.btn_open_map: 
       android.support.v4.app.FragmentManager fragmentManager 
         = getSupportFragmentManager(); 
       DirectionsMapDialogFragment mapDialogFragment = new DirectionsMapDialogFragment(); 
       mapDialogFragment.setLatLng(mLatLng); 
       mapDialogFragment.setRetainInstance(false); 
       mapDialogFragment.show(fragmentManager, "fragmentName"); 
      break; 

В фрагменте себя все это довольно стандартный код. Однако я использовать пользовательский макет, так как у меня есть кнопка, перекрывающая карту, которая запускает приложение GoogleMaps:

<FrameLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:clickable="true" 
    tools:context="com.alexrafa.meetmi.fragments.DirectionsMapFragment" 
    android:background="@android:color/transparent"> 

    <com.google.android.gms.maps.MapView 
     android:id="@+id/mv_location_map" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:clickable="true" 
     android:apiKey="APIKEY" 
     /> 

    <ImageButton 
     android:layout_width="39dp" 
     android:layout_height="39dp" 
     android:src="@drawable/ic_directions_grey600_24dp" 
     android:id="@+id/btn_directions" 
     android:background="@drawable/background_map_button" 
     android:layout_gravity="top|center|right" 
     android:layout_marginRight="11dp" 
     android:layout_marginTop="60dp" 
     android:contentDescription="@string/btn_get_map_directions" /> 

</FrameLayout> 

Обратите внимание, как я попытался установить фон прозрачные в FrameLayout. Я сделал это, потому что, кажется, моя карта перекрываются стандартной серой накладкой всех Диалогов есть в Android:

The DialogFragment showing the map

И это не проблема аутентификации API, все функции изображения карт работают отлично. Как я могу это исправить?

+2

Кажется, что ваш фрагмент диалога использует тему Holo для фрагмента диалога карты. Попробуйте установить тему различия для вашего DirectionsMapDialogFragment. Здесь вы можете найти ссылку для запуска диалога frament с атрибутом темы: http://stackoverflow.com/questions/ 13469084/dialogfragment-in-android-with-theme – saurabh1489

+0

Благодарим за внимание. Я попытался установить стиль, но не повезло ... – Deegriz

+0

Вы пытались установить фон диалога из кода. Что-то вроде этого: dialog.getWindow(). SetBackgroundDrawable (newColorDrawableResource (android.R.color.transparent)); – saurabh1489

ответ

1

Так вот как я в конечном итоге фиксируя мой маленькие затруднительный:
я установить тему для диалога, в частности mapDialogFragment.setStyle(DialogFragment.STYLE_NORMAL, android.R.style.Theme_Light_Panel);
И добавил некоторые верхние и нижние отступы в макете. Результат: Fixed dialog

Большой до saurabh1489 за помощь в поиске ответа!