728x90
반응형
덜지 2017.05.19 18:11
Fragment에 구현된 구글 맵에 자동완성검색 위젯을 추가해보도록 하겠습니다.
1. 구글 맵 위에 위젯 올리기
2. 위젯 리스너 추가하기
3. 결과값에 마커 표시하기
위 순서로 진행하겠습니다.
fragment_fragment1.xml
프래그먼트에는 테두리나 배경이 없습니다. 그래서 시각적 모양을 보여주려면, 또다른 레아웃 요소 내에 프래그먼트를 중첩시켜줘야 합니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35 |
<?xml version= "1.0" encoding= "utf-8" ?> <RelativeLayout xmlns:android= "http://schemas.android.com/apk/res/android" android:layout_width= "match_parent" android:layout_height= "match_parent" android:background= "#000000" > <!-- Activity에서는 fragment로 구현해야되지만 Fragment로 구현하기위해서는 MapView를 사용해야함--> <com.google.android.gms.maps.MapView android:id= "@+id/map" android:layout_width= "match_parent" android:layout_height= "match_parent" android:name= "com.google.android.gms.maps.MapFragment" /> <android.support.v7.widget.CardView android:name= "@+id/card_view" android:layout_width= "400dp" android:layout_height= "40dp" android:layout_gravity= "center" card_view:cardCornerRadius= "4dp" > <fragment android:id= "@+id/place_autocomplete_fragment" android:layout_width= "match_parent" android:layout_height= "wrap_content" android:name= "com.google.android.gms.location.places.ui.PlaceAutocompleteFragment" > </fragment> </android.support.v7.widget.CardView> </RelativeLayout> |
Activity에 올리는 경우는 아래 코드만 xml에 넣으시면 됩니다.
<fragment
android:id="@+id/place_autocomplete_fragment"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:name="com.google.android.gms.location.places.ui.PlaceAutocompleteFragment"
/>
위에서 사용한 CardView의 특징을 간략하게 살펴보겠습니다.
CardView는 FrameLayout 클래스를 확장하고 카드 내의 정보를 플랫폼에서 일관된 모습으로 표시할 수 있도록 합니다.
CardView위젯은 그림자와 둥근 모서리를 가질 수 있습니다.
- 레이아웃에 모서리 반지름을 사용하려면 card_view:cardCornerRadius 특성을 사용합니다.
- 코드에서 모서리 반지름을 설정하려면 CardView.setRadius를 사용합니다
- 카드의 배경색을 설정하려면 card_view:cardBackgroundColor 특성을 사용합니다.
CardView 위젯은 v7 지원 라이브러리의 일부이기때문에 프로젝트에서 사용하려면 Gradle 종석성을 추가해야합니다
dependencies {
...
compile 'com.android.support:cardview-v7:21.0.+'
}
위의 코드를 쓰시면서 CardView 클래스를 찾을 수 없다는 에러 메시지가 출력된다면
compile 'com.android.support:cardview-v7:사용중인버전' 을 Gradle ( 모듈 )에 추가하시면 됩니다.
// 구글 지도 검색 API
implementation 'com.google.android.gms:play-services-places:15.0.0'
// 카드뷰
compile 'com.android.support:cardview-v7:26.1.0'
Fragment1.java
나머지 코드는 이전에 만든것들과 동일하며 onCreateView만 코드를 추가하면 됩니다.
PlaceAutocompleteFragment 객체를 생성하고 핸들을 연결합니다.
그리고 결과값 선택 리스너를 추가합니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27 |
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { View layout = inflater.inflate(R.layout.fragment_fragment1, container, false ); mapView = (MapView)layout.findViewById(R.id.map); mapView.getMapAsync( this ); PlaceAutocompleteFragment autocompleteFragment = (PlaceAutocompleteFragment) getActivity().getFragmentManager().findFragmentById(R.id.place_autocomplete_fragment); autocompleteFragment.setOnPlaceSelectedListener( new PlaceSelectionListener() { @Override public void onPlaceSelected(Place place) { Location location = new Location( "" ); location.setLatitude(place.getLatLng().latitude); location.setLongitude(place.getLatLng().longitude); setCurrentLocation(location, place.getName().toString(), place.getAddress().toString()); } @Override public void onError(Status status) { Log.i(TAG, "An error occurred: " + status); } }); return layout; } |
출처: http://duzi077.tistory.com/125 [개발하는 두더지]
출처: http://duzi077.tistory.com/125 [개발하는 두더지]
728x90
반응형
'Android' 카테고리의 다른 글
구글맵 Marker Option 사용 방법 ( 출처 만 ) (0) | 2018.04.28 |
---|---|
안드로이드(Android) ImageView 사이즈(size) 조절하는 방법 (0) | 2018.04.28 |
안드로이드 구글 맵 API 사용 (0) | 2018.04.27 |
URL 절대경로 가져오기 ( 갤러리에서 사용 ) (0) | 2018.04.25 |
EditText 줄 제한 textMultiLine (0) | 2018.04.24 |