web-dev-qa-db-fra.com

Android Rendu des fragments de Studio Google Map V2

J'ai essayé d'écrire une démo de test pour Google Map V2 dans Android Studio. J'ai suivi chaque étape de Androidhive Google Map V2 ou mieux je pense que j'ai besoin.

J'utilise le même layout_main.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
    Android:layout_width="fill_parent"
    Android:layout_height="fill_parent" >

    <fragment
        Android:id="@+id/map"
        Android:name="com.google.Android.gms.maps.MapFragment"
        Android:layout_width="match_parent"
        Android:layout_height="match_parent"/>

</RelativeLayout>

mais j'ai toujours le même problème de rendu:

Problèmes de rendu
UNE <fragment> tag permet à un fichier de présentation d'inclure dynamiquement différentes présentations lors de l'exécution. Au moment de la mise en page, la mise en page spécifique à utiliser n'est pas connue. Vous pouvez choisir la disposition que vous souhaitez prévisualiser lors de la modification de la disposition ...

Je n'ai absolument aucune idée du problème. Ai-je oublié quelque chose? J'ai juste besoin d'ajouter des services Google dans le build.gradle comme

compile 'com.google.Android.gms:play-services:4.4.52'

J'ai copié le manifeste de la démo et changé la clé API.

36
user3659544

Problèmes de rendu
Une étiquette <fragment> permet à un fichier de présentation d'inclure dynamiquement différentes présentations lors de l'exécution. Au moment de la mise en page, la mise en page spécifique à utiliser n'est pas connue. Vous pouvez choisir la disposition que vous souhaitez prévisualiser lors de la modification de la disposition ...

Ceci est juste la fenêtre d'aperçu vous indiquant qu'elle ne peut pas afficher d'aperçu pour le <Fragment.../> tag, car il ne sait pas quel type de fragment vous allez y mettre. Vous pouvez ignorer ce message en toute sécurité - votre application réelle rendra le fragment fin lorsque vous l'exécuterez (tant que vous le coderez correctement!).

46
Dan Amato

La réponse acceptée n'est pas fausse mais cela n'aide pas.

Comme Dan l'a écrit, Android Studio (également la version 1.0) n'affichera pas la carte.
Maps a besoin d'une clé API et d'un code traité dynamique, peut-être qu'un jour nous l'aurons mais jusqu'à présent pas.
J'ai une solution de 5 minutes pour ceux qui veulent voir leur application correctement dans l'aperçu de la mise en page: enter image description here

Pour bien développer, j'avais encore besoin d'autre chose qu'un arrière-plan vierge.
J'ai ajouté des superpositions et des boutons en haut de la carte, j'avais vraiment besoin de voir la carte tout en plaçant des éléments dessus.
La solution est simple:
1. Faites une capture d'écran de votre application avec la carte en cours d'exécution (Power + Volume Down)
2. Téléchargez la capture d'écran et utilisez un éditeur d'image pour supprimer les éléments d'interface utilisateur supérieur et inférieur, de sorte que vous vous retrouverez avec uniquement la carte elle-même en tant qu'image.
3. Importez cette image dans Android drawables studio
4. créer une nouvelle mise en page, nommez-la dummy_mapviewfragment, place uniquement une disposition linéaire et une vue d'image dans
5. faites en sorte que la vue d'image "remplisse" le parent et définissez "src" sur l'image recadrée que vous venez d'importer
6. retour à votre mise en page, ajoutez ceci dans votre XML Mapview Fragment:

 tools:layout="@layout/dummy_mapviewfragment"/>

Voilà, vous aurez maintenant un fragment de carte non interactif qui affiche une vraie carte.
Votre application ressemblera à votre téléphone portable. Si vous avez fait des erreurs dans le recadrage de votre image, vous pouvez la "corriger" en réglant l'échelle de l'image sur "centerCrop" afin qu'elle s'étende correctement.

Mise à jour: vous pouvez obtenir une capture d'écran sans avoir besoin de recadrer directement depuis Androidstudio! La rend un peu plus pratique;)

71
John

Android Studio propose automatiquement une solution dans la description de l'erreur, qui ajoute le nom de la disposition des fragments.

tools: layout = "@ layout/fragment_my"

0
Alberto Olmos

Ajoutez une disposition factice "@Android: layout/simple_gallery_item" comme:

<fragment
    xmlns:Android="http://schemas.Android.com/apk/res/Android"
    xmlns:tools="http://schemas.Android.com/tools"
    xmlns:map="http://schemas.Android.com/apk/res-auto"
    Android:layout_width="317dp"
    Android:layout_height="385dp"
    Android:id="@+id/map"
    tools:context="com.example.XYZ.googlemaps.MapsActivity"
    Android:name="com.google.Android.gms.maps.SupportMapFragment"
    tools:layout="@Android:layout/simple_gallery_item"/>
0
Himanshu Bhatnagar