0

Ich verwende das Google Maps-API in Android Studio (über die Standardaktivitäten von Google Maps). Ich habe setMyLocationEnabled(true) aktiviert, aber setMyLocationButtonEnabled false gesetzt, da ich einen benutzerdefinierten Floating Action Button hinzufügen wollte, der für mich besser aussieht, um zum aktuellen Ort zu wechseln. Wenn eine Markierung angeklickt wird, erzeugt die API automatisch rechts unten im Kartenfragment Richtungsschaltflächen für diese Markierung, aber der FAB, den ich implementiert habe, deckt diese Schaltflächen ab.Floating-Action-Button oberhalb der Routen-Popup im Google Maps API-Fragment verschieben?

FAB covers API directions http://i63.tinypic.com/eg48m.png

Nachdem bei this answer suchen wickelte ich das Karten-Fragment und Floating Action-Schaltfläche in einem CoordinatorLayout, dass es Hoffnung, würde die FAB oben bewegen, wenn eine Markierung geklickt wird, wie es mit Snack-Bars tut, aber es doesn‘ t. Gibt es eine Möglichkeit, diese Bewegung manuell zu aktivieren oder zumindest mit Touch-Events oder ähnlichem zu simulieren? Ich habe versucht, nach Wegen zu suchen, um den FAB zur Laufzeit zu bewegen (wie this), aber es gelang mir nicht, eine passende Lösung für meine Situation zu finden.

Hier ist das XML für das Layout für die Aktivität, lassen Sie mich wissen, ob mehr Informationen benötigt werden. Danke im Voraus!

<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:app="http://schemas.android.com/apk/res-auto" 
xmlns:tools="http://schemas.android.com/tools" 
android:layout_width="match_parent" 
android:layout_height="match_parent"> 

    <fragment 
     android:id="@+id/map" 
     android:name="com.google.android.gms.maps.SupportMapFragment" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     tools:context="(hidden for privacy)"/> 

    <android.support.design.widget.FloatingActionButton 
     android:id="@+id/find_my_location" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_gravity="bottom|end" 
     android:layout_margin="@dimen/fab_margin" 
     android:src="@drawable/ic_my_location_gray" 
     app:backgroundTint="@color/white"/> 
</android.support.design.widget.CoordinatorLayout> 

Antwort

0

Ich nehme android:layout_marginBottom zu Ihrem FAB aus xml geben nicht funktioniert oder Sie nicht über diese Lösung bevorzugen, so:

Sie können entweder verbergen Richtungstasten am unteren Rand mit setMapToolbarEnabled(), wenn Sie dies nicht tun brauchen sie: googleMap.getUiSettings().setMapToolbarEnabled(false);

oder hören für Marker Klicks mit GoogleMap.OnMarkerClickListener:

googleMap.setOnMarkerClickListener(this);

und dann tun, was Sie wollen in onMarkerClick():

@Override 
public boolean onMarkerClick(Marker marker) { 
     //give some margin programmatically 
     //return false to preserve the default behaviour, true o/w 
     return true; 
} 
+0

Während ich nicht Ihre genaue Lösung verwendet haben, die Erwähnung von 'onMarkerClick' bekam dachte mir etwas zu tun gibt, wie Sie vorgeschlagen. Ich hatte das bereits implementiert, um einige Daten für jeden Marker zu laden, also habe ich 'FAB.hide()' auf 'onMarkerClick()' und 'FAB.show()' auf 'onMapClick()' hinzugefügt (da einer wahrscheinlich muss nicht zurück zum aktuellen Standort mit dem Infofenster nach oben gehen). Ich weiß nicht, warum ich vorher nicht daran gedacht habe, aber danke trotzdem! – CodingSingh