MapFragment in ScrollView
Habe ich eine der neuen MapFragment
s in einem ScrollView
. Eigentlich ist es ein SupportMapFragment
aber trotzdem. Es funktioniert, aber es gibt zwei Probleme:
-
Wenn gescrollt wird, hinterlässt es eine schwarze Maske, hinter. Das schwarz deckt genau den Bereich, wo die Karte war, außer einem Loch, in dem Sie die +/- zoom-buttons wurden. Siehe Abbildung unten. Diese ist auf Android 4.0.
-
Den Blick nicht
requestDisallowInterceptTouchEvent()
wenn der Benutzer interagiert mit der Karte zu verhindern, dass dieScrollView
abfangen berührt, so dass, wenn Sie versuchen, um zu schwenken vertikal in die Karte, die es nur Schriftrollen, die mitScrollView
. Ich könnte theoretisch daraus eine view-KlasseMapView
und diese Funktionalität hinzufügen, aber wie bekomme ichMapFragment
um meine individuelleMapView
anstelle des standard?
InformationsquelleAutor der Frage Timmmm | 2012-12-06
Du musst angemeldet sein, um einen Kommentar abzugeben.
Anwendung ein transparentes Bild über die mapview fragment scheint das Problem zu beheben. Es ist nicht das schönste, aber es scheint zu funktionieren. Hier ist ein XML-Codeausschnitt, der zeigt:
InformationsquelleAutor der Antwort walnut_head
Für mich hinzufügen ein transparentes Bildansicht nicht helfen, entfernen Sie die schwarze Maske vollständig. Die oberen und unteren Teile der Karte noch zeigte die schwarze Maske beim scrollen.
Also die Lösung dafür, fand ich in diese Antwort mit einer kleinen änderung.
Ich fügte hinzu,
meiner Karte fragment, da war es senkrecht scrollview. Also mein layout sah nun auf diese Weise:
Zu lösen, der zweite Teil der Frage, die ich mir gesetzt
requestDisallowInterceptTouchEvent(true)
für meine Haupt-ScrollView. Wenn der Benutzer berührt das transparente Bild und verschoben, ich deaktiviert die touch auf das transparente Bild fürMotionEvent.ACTION_DOWN
undMotionEvent.ACTION_MOVE
so, dass map-fragment kann nehmen Sie Touch-Ereignisse.Dieser arbeitete für mich. Hoffe es hilft dir..
InformationsquelleAutor der Antwort Laksh
Dieser hat seine Wurzeln wohl in der gleichen Stelle, an der das problem verursacht, die in diese Frage. Die Lösung ist die Verwendung eines transparenten Rahmen, der ist ein wenig leichter als ein transparentes Bild.
InformationsquelleAutor der Antwort iagreen
Gemacht, nach viel R&D:
fragment_one.xml sollte sieht wie folgt aus:
Ihre Java-Klasse FragmentOne.java sieht aus wie:
onCreateView
InformationsquelleAutor der Antwort Hiren Patel
Habe ich diese Strukturen, und ich überwand das problem.
Habe ich eine container-Ansicht für maps-fragment.
Die container-Klasse:
InformationsquelleAutor der Antwort Erkan Erol
Kein müssen Kampf mit customScrollViews und transparente layout-Dateien. verwenden Sie einfach eine kleinere version von google anzeigen, und das Problem wird gelöst werden.
oben einfügen-Eigenschaft innerhalb Kartenausschnitts in Ihrer layout-Datei. und das Problem wird behoben werden.
InformationsquelleAutor der Antwort Hammad Tariq
Für den zweiten Teil der Frage - man kann das ableiten einer fragment-Klasse aus SupportMapFragment, und verwenden Sie, die in Ihrem layout statt. Sie können dann überschreiben Fragment#onCreateViewund instanziieren der custom MapView es.
Wenn das nicht funktioniert, können Sie immer erstellen Sie Ihre eigenen fragment - dann brauchen Sie nur kümmern sich um alle dazu aufrufen, die lifecycle-Methoden selbst (onCreate, onResume, etc). Diese Antwort hat einige weitere details.
InformationsquelleAutor der Antwort Ralf
InformationsquelleAutor der Antwort Faakhir