Scorri in basso dalla mappa di Google su Marker

Voglio get quanto segue: GMaps scivola in mockup

La vista Info dovrebbe scivolare dal basso quando faccio clic su un marker. Il cerchio nero è un button di azione galleggiante e dovrebbe salire in alto con la window delle informazioni e riposare con il suo centro al margine superiore della window delle informazioni.

  • Come scrivere il nome del contatto e il contatto in modo row in file .csv in Android?
  • È ancora il caso che Android non scarica mai le classi?
  • come submit string da http post in UTF-8
  • Avviare una intenzione della camera, ma non salvare l'image
  • Forza hide la barra degli indirizzi in Chrome su Android
  • Attendere fino a completare onChildAdded in firebase querys, Android
  • Quando faccio clic su nessuna parte, ma nella window delle informazioni, dovrò scivolare verso il basso e scomparire.

    Potresti darti alcuni punti di partenza? Ho già letto di animatori di oggetti e di CoordinatorLayout, ma non so where cominciare.

  • Perché FusedLocationApi.getLastLocation null
  • Come gestire ConcurrentModificationException in Android
  • Android: collega la libreria condivisa preinstallata (.so) all'interno del file jar in NDK
  • Come utilizzare i disegni Android predefiniti
  • La chiave API per GCM è improvvisamente invalido? Errore non autorizzato (401)
  • Ottenere NoClassDefFoundError: android.os.AsyncTask
  • 2 Solutions collect form web for “Scorri in basso dalla mappa di Google su Marker”

    Il foglio di fondo Flipboard lo farà, ma senza il FAB. Flipboard / bottomsheet

    È ansible implementarlo da soli aggiungendo un elemento di bottomsheet al layout genitore di MapFragment e quindi impostando un personalizzato OnMarkerClickListener .

    Per far funzionare il foglio inferiore, è necessario utilizzare il CoordinatorLayout per il genitore del MapFragment . Per creare un elemento bottomsheet, è necessario impostare app:layout_behavior="android.support.design.widget.BottomSheetBehavior in un elemento di layout, ad esempio un NestedScrollView .

     <?xml version="1.0" encoding="utf-8"?> <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" android:fitsSystemWindows="true" tools:context=".MainActivity"> <include layout="@layout/content_main" /> <android.support.v4.widget.NestedScrollView android:id="@+id/bottom_sheet" android:layout_width="match_parent" android:layout_height="550dp" android:background="@android:color/white" android:clipToPadding="true" app:layout_behavior="android.support.design.widget.BottomSheetBehavior"> <TextView android:id="@+id/detail_name" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_margin="25dp" android:layout_weight="3" android:gravity="center_vertical" android:textAppearance="?android:textAppearanceLarge" /> </android.support.v4.widget.NestedScrollView> 

    Il frammento della mappa:

     <?xml version="1.0" encoding="utf-8"?> <RelativeLayout 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" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" app:layout_behavior="@string/appbar_scrolling_view_behavior" tools:context=".MainActivity" tools:showIn="@layout/app_bar_main"> <fragment android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/map" android:name="com.google.android.gms.maps.MapFragment"/> </RelativeLayout> 

    Quindi, nella class di attività, è ansible impostare il comportmento iniziale del foglio di fondo in onCreate() :

     private BottomSheetBehavior bottomSheetBehavior; private View bottomSheet; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); bottomSheet = findViewById(R.id.bottom_sheet); bottomSheetBehavior = BottomSheetBehavior.from(bottomSheet); bottomSheetBehavior.setPeekHeight(200); bottomSheetBehavior.setHideable(true); bottomSheetBehavior.setState(BottomSheetBehavior.STATE_HIDDEN); } 

    Modificare il comportmento della mappa in onMapReady() :

     @Override public void onMapReady(GoogleMap googleMap) { map = googleMap; map.setOnMarkerClickListener(new GoogleMap.OnMarkerClickListener() { @Override public boolean onMarkerClick(Marker marker) { updateBottomSheetContent(marker); return true; } }); map.setOnMapClickListener(new GoogleMap.OnMapClickListener() { @Override public void onMapClick(LatLng latLng) { bottomSheetBehavior.setState(BottomSheetBehavior.STATE_HIDDEN); } }); } private void updateBottomSheetContent(Marker marker) { TextView name = (TextView) bottomSheet.findViewById(R.id.detail_name); name.setText(marker.getTitle()); bottomSheetBehavior.setState(BottomSheetBehavior.STATE_COLLAPSED); } 

    Naturalmente puoi anche utilizzare alcuni dati memorizzati nel marcatore per ContentProvider il database o ContentProvider per il record appropriato e quindi utilizzare i dati restituiti per impostare più text, immagini, ecc. Nel foglio di fondo.

    L'Android è un fan Android di Google, tutto su telefoni Android, Android Wear, Android Dev e applicazioni Android Games e così via.