web-dev-qa-db-ja.com

Android Studio Google Map V2フラグメントレンダリング

Google Map V2のテストデモをAndroid Studioで作成しようとしました。 Androidhive Google Map V2 またはそれ以上必要。

私は同じ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>

しかし、私は常に同じレンダリング問題を抱えています:

レンダリングの問題
A <fragment>タグを使用すると、レイアウトファイルに実行時にさまざまなレイアウトを動的に含めることができます。レイアウトの編集時には、使用する特定のレイアウトは不明です。レイアウトの編集中にプレビューするレイアウトを選択できます...

何が問題なのか全くわからない。何か忘れましたか? build.gradleにGoogleサービスを追加するだけです

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

デモからマニフェストをコピーし、APIキーを変更しました。

36
user3659544

レンダリングの問題
タグ<fragment>を使用すると、実行時にレイアウトファイルにさまざまなレイアウトを動的に含めることができます。レイアウトの編集時には、使用する特定のレイアウトは不明です。レイアウトの編集中にプレビューするレイアウトを選択できます...

これは、<Fragment.../>タグのプレビューを表示できないことを通知する単なるプレビューウィンドウです。これは、挿入するフラグメントの種類がわからないためです。そのメッセージは安全に無視できます-実際にアプリを実行すると、フラグメントが正常にレンダリングされます(コードを正しくコーディングしていれば!)。

46
Dan Amato

受け入れられた答えは間違っていませんが、助けにはなりません。

Danが書いたように、Android Studio(バージョン1.0)もマップを表示しません。
MapsにはAPIキーと動的に処理されたコードが必要です。いつかそれができるかもしれませんが、今のところはありません。
レイアウトプレビューでアプリを適切に表示したい人のための5分間の解決策があります。 enter image description here

適切に開発するには、まだ空白の背景以外のものが必要でした。
地図の上にオーバーレイとボタンを追加しました。本当に地図の上に要素を配置しながら表示する必要がありました。
解決策は簡単です。
1。マップを実行した状態でアプリのスクリーンショットを作成します(Power + Volume Down)
2。スクリーンショットをダウンロードし、画像エディターを使用して上部および下部のUI要素を削除します。これにより、マップ自体のみが画像として表示されます。
3。その画像をAndroid studio drawablesにインポートします
4。新しいレイアウトを作成し、名前を付けますdummy_mapviewfragment、linearlayoutとimageviewのみを配置します
5。 imageviewを親に「塗りつぶし」、インポートしたばかりのトリミングされた画像に「src」を設定します
6。レイアウトに戻り、これをMapview Fragment xmlに追加します。

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

これで、実際の地図を表示する非対話型のmapviewフラグメントができました。
アプリは、携帯電話で表示されるように見えます。画像の切り取りでエラーが発生した場合は、画像の縮尺を「centerCrop」に設定して「修正」すると、適切に拡大されます。

更新:Androidstudio内から直接トリミングする必要なく、スクリーンショットを取得できます!少し便利になります;)

71
John

Android Studioは、エラーの説明内にソリューションを自動的に提供します。これにより、フラグメントレイアウトの名前が追加されます。

tools:layout = "@ layout/fragment_my"

0
Alberto Olmos

ダミーレイアウト「@Android:layout/simple_gallery_item」を次のように追加します。

<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