Place Search コンポーネント
Places UI キットの Place Search コンポーネントは、場所検索の結果をリストにレンダリングします。

場所検索のリストはカスタマイズできます。次の項目を指定できます。
- 表示するコンテンツ
- 縦向きのメディア サイズ
- テキストの切り捨て
- 向き
- ブランドとアプリのデザイン言語に合わせたテーマのオーバーライド
- アトリビューションの位置
- 場所を選択できるかどうか
リクエストをカスタマイズして、Search by text request
または Search Nearby request
を実行することもできます。
課金
configureFromSearchByTextRequest()
または configureFromSearchNearbyRequest()
バインディング値が変更されるたびに、課金されます。
アプリにプレイス検索を追加する
レイアウトに PlaceSearchFragment
Fragment を追加して、プレイス検索ウィジェットを使用します。
アプリでテキスト検索または周辺検索の結果を読み込む場合は、リクエストとともに configureFromSearchByTextRequest()
または configureFromSearchNearbyRequest()
を呼び出します。
Kotlin
fragment.configureFromSearchByTextRequest(searchByTextRequest) // or fragment.configureFromSearchNearbyRequest(searchNearbyRequest) for nearby search
Java
fragment.configureFromSearchByTextRequest(searchByTextRequest) // or fragment.configureFromSearchNearbyRequest(searchNearbyRequest) for nearby search
コンポーネントにオプションの PlaceSearchFragmentListener
を追加して、コンポーネントの読み込み時、場所の選択時(選択可能に設定されている場合)、コンポーネントの読み込みエラー発生時にコールバックを受け取ることもできます。
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) {...} } )
Place Search コンポーネントをカスタマイズする
コンテンツのカスタマイズ
コンポーネントに表示するコンテンツを指定する必要があります。この例では、場所の住所と評価を表示するようにコンポーネントを構成します。
Kotlin
val fragment = PlaceSearchFragment.newInstance(listOf(Content.ADDRESS, Content.RATING))
Java
PlaceSearchFragment fragment = PlaceSearchFragment.newInstance(listOf(Content.ADDRESS,Content.RATING));
プレイス検索コンポーネントに表示されるコンテンツの次の側面を必要に応じてカスタマイズすることもできます。
- PlaceSearchFragment.Content: コンポーネントに表示されるコンテンツ。
- mediaSize: フラグメントの縦向きの写真のサイズ。デフォルトは
SMALL
です。 - preferTruncation: 各 Place Details ビューのテキストを切り詰めるかどうか。
- attributionPosition: Google マップの帰属表示をコンポーネントの上部または下部に表示するかどうか。
- selectable: リスト内の各場所が選択可能かどうか。
カスタマイズ構成を 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)
向きをカスタマイズする
デフォルトの向きは縦向きです。横向きの場合は、PlaceSearchFragment.newInstance()
で Orientation.HORIZONTAL
を指定します。
Kotlin
PlaceSearchFragment.newInstance( PlaceSearchFragment.ALL_CONTENT, Orientation.HORIZONTAL )
Java
PlaceSearchFragment.newInstance( PlaceSearchFragment.ALL_CONTENT, Orientation.HORIZONTAL )
テーマをカスタマイズする
フラグメントをインスタンス化するときに、デフォルトのスタイル属性をオーバーライドするテーマを指定できます。デフォルトは PlacesMaterialTheme
です。テーマ設定について詳しくは、Place Details コンポーネントのドキュメントをご覧ください。
オーバーライドされていないテーマ属性は、デフォルト スタイルを使用します。ダークモードをサポートする場合は、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>
例
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)