장소 검색 구성요소
Places UI Kit의 장소 검색 구성요소는 장소 검색 결과를 목록에 렌더링합니다.

장소 검색 목록을 맞춤설정할 수 있습니다. 다음 항목을 지정할 수 있습니다.
- 표시할 콘텐츠
- 세로 방향의 미디어 크기
- 텍스트 자르기
- 방향
- 브랜드 및 앱의 디자인 언어와 일치하는 테마 재정의
- 저작자 표시의 위치
- 장소를 선택할 수 있는지 여부
Search by text request
또는 Search Nearby request
을 실행하도록 요청을 맞춤설정할 수도 있습니다.
결제
configureFromSearchByTextRequest()
또는 configureFromSearchNearbyRequest()
바인딩 값이 변경될 때마다 요금이 청구됩니다.
앱에 장소 검색 추가
레이아웃에 PlaceSearchFragment
프래그먼트를 추가하여 장소 검색 위젯을 사용합니다.
앱이 텍스트 검색 또는 주변 검색 결과를 로드하도록 하려면 요청과 함께 configureFromSearchByTextRequest()
또는 configureFromSearchNearbyRequest()
를 호출합니다.
Kotlin
fragment.configureFromSearchByTextRequest(searchByTextRequest) // or fragment.configureFromSearchNearbyRequest(searchNearbyRequest) for nearby search
자바
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) {...} } )
자바
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))
자바
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
자바
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 )
자바
PlaceSearchFragment.newInstance( PlaceSearchFragment.ALL_CONTENT, Orientation.HORIZONTAL )
테마 맞춤설정
프래그먼트를 인스턴스화할 때 기본 스타일 속성을 재정의하는 테마를 지정할 수 있습니다. 기본값은 PlacesMaterialTheme
입니다. 테마에 관한 자세한 내용은 장소 세부정보 구성요소 문서를 참고하세요.
재정의되지 않은 테마 속성은 기본 스타일을 사용합니다. 어두운 테마를 지원하려면 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)