Composant Place Search
Le composant Place Search du kit d'interface utilisateur Places affiche les résultats d'une recherche de lieu dans une liste.

Vous pouvez personnaliser la liste de recherche de lieux. Vous pouvez spécifier ce qui suit :
- Le contenu à afficher
- Taille du support en orientation verticale
- Troncation du texte
- Orientation
- Remplacements de thème correspondant à la langue de conception de votre marque et de votre application
- Position de l'attribution
- Indique si un lieu peut être sélectionné.
Vous pouvez également personnaliser la requête pour effectuer une Search by text request
ou une Search Nearby request
.
Facturation
Vous êtes facturé chaque fois que la valeur de liaison configureFromSearchByTextRequest()
ou configureFromSearchNearbyRequest()
est modifiée.
Ajouter la recherche de lieux à votre application
Utilisez le widget Place Search en ajoutant le Fragment PlaceSearchFragment
à votre mise en page.
Lorsque vous souhaitez que votre application charge un résultat de recherche textuelle ou de recherche à proximité, appelez configureFromSearchByTextRequest()
ou configureFromSearchNearbyRequest()
avec la requête.
Kotlin
fragment.configureFromSearchByTextRequest(searchByTextRequest) // or fragment.configureFromSearchNearbyRequest(searchNearbyRequest) for nearby search
Java
fragment.configureFromSearchByTextRequest(searchByTextRequest) // or fragment.configureFromSearchNearbyRequest(searchNearbyRequest) for nearby search
Vous pouvez également ajouter un PlaceSearchFragmentListener
facultatif au composant pour recevoir des rappels lorsque le composant se charge, qu'un lieu est sélectionné (si la sélection est activée) ou qu'une erreur se produit lors du chargement du composant.
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) {...} } )
Personnaliser le composant Place Search
Personnaliser le contenu
Vous devez spécifier le contenu que votre composant affichera.Cet exemple configure le composant pour afficher l'adresse et la note du lieu.
Kotlin
val fragment = PlaceSearchFragment.newInstance(listOf(Content.ADDRESS, Content.RATING))
Java
PlaceSearchFragment fragment = PlaceSearchFragment.newInstance(listOf(Content.ADDRESS,Content.RATING));
Vous pouvez également personnaliser les aspects suivants du contenu qui s'affiche dans votre composant Place Search :
- PlaceSearchFragment.Content : contenu affiché dans le composant.
- mediaSize : taille de la photo dans l'orientation verticale du fragment. La valeur par défaut est
SMALL
. - preferTruncation : indique si le texte de chaque vue Détails du lieu doit être tronqué.
- attributionPosition : indique si l'attribution Google Maps doit s'afficher en haut ou en bas du composant.
- selectable : indique si chaque lieu de la liste peut être sélectionné.
Ajoutez votre configuration de personnalisation à 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)
Personnaliser l'orientation
L'orientation par défaut est verticale. Pour l'orientation horizontale, spécifiez Orientation.HORIZONTAL
dans PlaceSearchFragment.newInstance()
.
Kotlin
PlaceSearchFragment.newInstance( PlaceSearchFragment.ALL_CONTENT, Orientation.HORIZONTAL )
Java
PlaceSearchFragment.newInstance( PlaceSearchFragment.ALL_CONTENT, Orientation.HORIZONTAL )
Personnaliser le thème
Lorsque vous instanciez un fragment, vous pouvez spécifier un thème qui remplace l'un des attributs de style par défaut. La valeur par défaut est PlacesMaterialTheme
. Pour en savoir plus sur les thèmes, consultez la documentation sur le composant Détails du lieu.
Tous les attributs de thème qui ne sont pas remplacés utilisent les styles par défaut. Si vous souhaitez prendre en charge un thème sombre, vous pouvez ajouter une entrée pour la couleur dans 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>
Exemple
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)