Компонент поиска мест
Компонент Place Search из Places UI Kit отображает результаты поиска мест в виде списка.
Вы можете настроить список поиска мест. Вы можете указать:
- Контент, который нужно показать.
- Размер медиаконтента при вертикальной ориентации
- Сокращение текста
- Ориентация
- переопределения тем, соответствующие бренду и системе дизайна приложения;
- Позиция атрибуции
- Можно ли выбрать место.
Вы также можете настроить запрос на выполнение SearchByTextRequest или SearchNearbyRequest.
Оплата
С вас будет взиматься плата каждый раз, когда изменяется значение привязки configureFromSearchByTextRequest() или configureFromSearchNearbyRequest().
Как добавить в приложение поиск мест
Чтобы использовать виджет поиска мест, добавьте в макет PlaceSearchFragment фрагмент.
Чтобы загрузить в приложение результаты текстового поиска или поиска поблизости, вызовите метод 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) {...} } )
Как настроить компонент поиска мест
Как настроить контент
Вам нужно указать, какой контент будет отображаться в компоненте.В этом примере компонент настроен так, чтобы показывать адрес и рейтинг места.
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 – нужно ли обрезать текст в каждом представлении информации о местах.
- 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)
Как настроить ориентацию
По умолчанию для скринкаста выбирается вертикальная ориентация. Для горизонтальной ориентации укажите Orientation.HORIZONTAL в PlaceSearchFragment.newInstance().
Kotlin
PlaceSearchFragment.newInstance( PlaceSearchFragment.ALL_CONTENT, Orientation.HORIZONTAL )
Java
PlaceSearchFragment.newInstance( PlaceSearchFragment.ALL_CONTENT, Orientation.HORIZONTAL )
Как настроить тему
При создании фрагмента можно указать тему, которая переопределит любые атрибуты стиля по умолчанию. Вы можете настроить цвета, типографику, интервалы, границы и углы компонента "Информация о месте". Значение по умолчанию – PlacesMaterialTheme.
Для атрибутов темы, которые не были переопределены, используются стили по умолчанию.
По умолчанию в Places UI Kit используется тёмная тема, поэтому вам может понадобиться настроить как тёмную, так и светлую тему. Чтобы настроить темную тему, добавьте запись для цвета в values-night/colors.xml.
Подробнее о собственных стилях…
Примеры
Как создать экземпляр компонента "Поиск мест"
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)
Как настроить тему
По умолчанию в Places UI Kit используется тёмная тема, поэтому вам может понадобиться настроить как тёмную, так и светлую тему. Чтобы настроить темную тему, добавьте запись для цвета в 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>