Переместить плавающую кнопку действия над всплывающим окном направлений во фрагменте API Карт Google?

Я использую API Google Maps в Android Studio (через действие Google Maps по умолчанию). Я включил setMyLocationEnabled(true), но установил setMyLocationButtonEnabled false, так как я хотел добавить пользовательскую плавающую кнопку действия, которая выглядит лучше для перемещения в текущее местоположение. Когда маркер нажат, API автоматически генерирует кнопки направления в правом нижнем углу фрагмента карты к этому маркеру, однако FAB, который я реализовал, закрывает эти кнопки.

FAB охватывает направления API

После просмотра этого answer Я обернул фрагмент карты и плавающую кнопку действия в CoordinatorLayout, надеясь, что он будет перемещать FAB вверх при нажатии на маркер, как это происходит с закусочными, но это не так. Есть ли способ активировать это движение вручную или хотя бы имитировать его с помощью сенсорных событий или чего-то подобного? Я попытался найти способы перемещения FAB во время выполнения (например, это ), но мне не удалось найти подходящее решение для моей ситуации.

Вот XML для макета для деятельности, дайте мне знать, если потребуется дополнительная информация. Заранее спасибо!

<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>



Ответы (1)


Я полагаю, что предоставление android:layout_marginBottom вашему FAB из xml не работает, или вы не предпочитаете это решение, поэтому:

Вы можете скрыть кнопки направлений внизу с помощью setMapToolbarEnabled(), если они вам не нужны: googleMap.getUiSettings().setMapToolbarEnabled(false);

или прослушивайте щелчки маркера с помощью GoogleMap.OnMarkerClickListener:< /а>

googleMap.setOnMarkerClickListener(this);

а затем делайте все, что хотите, в onMarkerClick():

@Override
public boolean onMarkerClick(Marker marker) {
        //give some margin programmatically
        //return false to preserve the default behaviour, true o/w 
        return true;
}
person gizembrh    schedule 09.08.2016
comment
Хотя я не использовал ваше точное решение, упоминание onMarkerClick заставило меня задуматься о том, чтобы сделать что-то там, как вы предложили. На самом деле я уже реализовал это для загрузки некоторых данных для каждого маркера, поэтому я просто добавил FAB.hide() к onMarkerClick() и FAB.show() к onMapClick() (поскольку, скорее всего, не нужно будет возвращаться к текущему местоположению с открытым информационным окном). Не знаю, почему я не подумал об этом раньше, но все равно спасибо! - person CodingSingh; 12.08.2016