Componente Place Search
Il componente Place Search del Places UI Kit esegue il rendering dei risultati di una ricerca di luoghi in un elenco.

Puoi personalizzare l'elenco Ricerca luoghi. Puoi specificare:
- I contenuti da visualizzare
- Dimensioni dei contenuti multimediali in orientamento verticale
- Troncamento testo
- L'orientamento
- Override del tema che corrispondono al brand e al linguaggio di progettazione dell'app
- La posizione dell'attribuzione
- Se un luogo è selezionabile
Puoi anche personalizzare la richiesta per eseguire un'Search by text request
o un Search Nearby request
.
Fatturazione
L'addebito viene effettuato ogni volta che viene modificato il valore di binding configureFromSearchByTextRequest()
o configureFromSearchNearbyRequest()
.
Aggiungere la ricerca di luoghi all'app
Utilizza il widget Ricerca luoghi aggiungendo il PlaceSearchFragment
frammento al tuo layout.
Quando vuoi che la tua app carichi una ricerca di testo o un risultato di ricerca nelle vicinanze, chiama configureFromSearchByTextRequest()
o configureFromSearchNearbyRequest()
con la richiesta.
Kotlin
fragment.configureFromSearchByTextRequest(searchByTextRequest) // or fragment.configureFromSearchNearbyRequest(searchNearbyRequest) for nearby search
Java
fragment.configureFromSearchByTextRequest(searchByTextRequest) // or fragment.configureFromSearchNearbyRequest(searchNearbyRequest) for nearby search
Puoi anche aggiungere un PlaceSearchFragmentListener
facoltativo al componente per ricevere callback quando il componente viene caricato, viene selezionato un luogo (se impostato come selezionabile) o quando si verifica un errore durante il caricamento del componente.
Kotlin
fragment.registerListener( object : PlaceSearchFragmentListener { override fun onLoad(places: List<Place>) {...} override fun onRequestError(e: Exception) {...} override fun onPlaceSelected(place: Place) {...} } )
Java
fragment.registerListener( new PlaceSearchFragmentListener() { @Override public void onLoad(List<? extends Place> places) {...} @Override public void onRequestError(Exception e) {...} @Override public void onPlaceSelected(Place place) {...} } )
Personalizzare il componente Place Search
Personalizzare i contenuti
Devi specificare i contenuti che verranno visualizzati dal componente.Questo esempio configura il componente per visualizzare l'indirizzo e la valutazione del luogo.
Kotlin
val fragment = PlaceSearchFragment.newInstance(listOf(Content.ADDRESS, Content.RATING))
Java
PlaceSearchFragment fragment = PlaceSearchFragment.newInstance(listOf(Content.ADDRESS,Content.RATING));
Puoi anche personalizzare facoltativamente i seguenti aspetti dei contenuti visualizzati nel componente Ricerca luoghi:
- PlaceSearchFragment.Content: i contenuti mostrati nel componente.
- mediaSize: le dimensioni della foto nell'orientamento verticale del frammento. Il valore predefinito è
SMALL
. - preferTruncation: indica se troncare il testo di ogni visualizzazione dei dettagli del luogo.
- attributionPosition: indica se mostrare l'attribuzione di Google Maps nella parte superiore o inferiore del componente.
- selezionabile: indica se ogni luogo nell'elenco è selezionabile.
Aggiungi la configurazione di personalizzazione a PlaceSearchFragment
.
Kotlin
fragment.preferTruncation = false fragment.attributionPosition = AttributionPosition.BOTTOM fragment.mediaSize = MediaSize.SMALL fragment.selectable = true
Java
fragment.setPreferTruncation(false) fragment.setAttributionPosition(AttributionPosition.BOTTOM) fragment.setMediaSize(MediaSize.SMALL) fragment.setSelectable(true)
Personalizzare l'orientamento
L'orientamento predefinito è verticale. Per l'orientamento orizzontale, specifica Orientation.HORIZONTAL
in PlaceSearchFragment.newInstance()
.
Kotlin
PlaceSearchFragment.newInstance( PlaceSearchFragment.ALL_CONTENT, Orientation.HORIZONTAL )
Java
PlaceSearchFragment.newInstance( PlaceSearchFragment.ALL_CONTENT, Orientation.HORIZONTAL )
Personalizzare il tema
Quando istanzi un frammento, puoi specificare un tema che esegue l'override di uno qualsiasi degli attributi di stile predefiniti. Il valore predefinito è PlacesMaterialTheme
. Per ulteriori informazioni sui temi, consulta la documentazione del componente Dettagli luogo.
Gli attributi del tema non sostituiti utilizzano gli stili predefiniti. Se vuoi supportare un tema scuro, puoi aggiungere una voce per il colore in values-night/colors.xml
.
<style name="CustomizedTheme" parent="PlacesMaterialTheme"> <item name="placesColorPrimary">@color/app_primary_color</item> <item name="placesColorOnSurface">@color/app_color_on_surface</item> <item name="placesColorOnSurfaceVariant">@color/app_color_on_surface</item> <item name="placesTextAppearanceBodySmall">@style/app_text_appearence_small</item> <item name="placesCornerRadius">20dp</item> </style>
Esempio
Kotlin
val fragment: PlaceSearchFragment = PlaceSearchFragment.newInstance(PlaceSearchFragment.STANDARD_CONTENT) fragment.preferTruncation = false fragment.attributionPosition = AttributionPosition.BOTTOM fragment.mediaSize = MediaSize.SMALL fragment.selectable = true fragment.registerListener( object : PlaceSearchFragmentListener { override fun onLoad(places: List<Place>) {...} override fun onRequestError(e: Exception) {...} override fun onPlaceSelected(place: Place) {...} } ) supportFragmentManager .beginTransaction() .replace(R.id.fragment_container, fragment) .commitNow() fragment.configureFromSearchByTextRequest(searchByTextRequest)
Java
PlaceSearchFragment fragment = PlaceSearchFragment.newInstance(PlaceSearchFragment.STANDARD_CONTENT); fragment.setPreferTruncation(false) fragment.setAttributionPosition(AttributionPosition.BOTTOM) fragment.setMediaSize(MediaSize.SMALL) fragment.setSelectable(true) fragment.registerListener( new PlaceSearchFragmentListener() { @Override public void onLoad(List<? extends Place> places) {...} @Override public void onRequestError(Exception e) {...} @Override public void onPlaceSelected(Place place) {...} } ) getSupportFragmentManager() .beginTransaction() .replace(R.id.fragment_container, fragment) .commitNow(); fragment.configureFromSearchByTextRequest(searchByTextRequest)