맞춤 컨트롤을 사용하면 탐색 뷰 상단에 자체 UI 요소를 추가할 수 있습니다. Navigation SDK는 기본 제공 레이아웃이 변경되면 맞춤 컨트롤의 위치를 자동으로 조정합니다.
각 위치에 대해 하나의 맞춤 컨트롤을 설정할 수 있습니다. 맞춤 컨트롤은 하나의 UI 요소일 수 있습니다. 또는 디자인에 더 많은 요소가 필요한 경우 ViewGroup
를 여러 UI 요소와 함께 사용할 수 있습니다.
setCustomControl
메서드는 CustomControlPosition
enum에 정의된 대로 위치를 제공합니다.
SECONDARY_HEADER
(세로 모드로만 표시됨)BOTTOM_START_BELOW
BOTTOM_END_BELOW
아래 이미지에서는 운전자에게 탑승자의 위치를 알려주는 UI 컨트롤의 배치에서 각 위치의 예를 확인할 수 있습니다.
기본 헤더 아래에 맞춤 컨트롤 추가
기본적으로 레이아웃에서는 기본 헤더 아래에 다음 화살표 또는 차선 안내를 표시합니다. 앱에서 기본 레이아웃을 보조 헤더 위치에 설정된 맞춤 컨트롤로 바꿀 수 있습니다. 이 컨트롤은 탐색 뷰 상단의 기본 콘텐츠를 대체합니다. 뷰에 배경이 있으면 이 배경은 그대로 유지됩니다. 앱에서 맞춤 콘텐츠를 삭제하면 기본 콘텐츠가 대신 표시됩니다.
이 위치는 기본 지도 헤더 아래에 있으며, 상단 가장자리는 기본 헤더의 하단 가장자리에 정렬됩니다. 기본 보조 헤더는 숨겨져 있습니다. 이 위치는 portrait mode
에서만 지원됩니다. landscape mode
에서는 보조 헤더를 사용할 수 없으며 레이아웃은 변경되지 않습니다.
- 맞춤 UI 요소 또는 ViewGroup을 사용하여 Android 뷰를 만듭니다.
- xml을 확장하거나 맞춤 뷰를 인스턴스화하여 보조 헤더로 추가할 뷰 인스턴스를 가져옵니다.
CustomControlPosition과 함께
NavigationView.setCustomControl
또는NavigationFragment.setCustomControl
를 2ARY_HEADER로 사용합니다.아래 예에서는 프래그먼트를 만들고 보조 헤더 위치에 맞춤 컨트롤을 추가합니다.
mNavFragment.setCustomControl(getLayoutInflater(). inflate(R.layout.your_custom_control, null), CustomControlPosition.SECONDARY_HEADER);
보조 헤더 삭제
보조 헤더를 삭제하고 기본 콘텐츠로 돌아가려면 setCustomControl
메서드를 사용합니다.
뷰를 삭제하려면 뷰를 null로 설정합니다.
mNavFragment.setCustomControl(null, CustomControlPosition.SECONDARY_HEADER);
탐색 뷰 상단에 맞춤 컨트롤 추가
앱은 뷰의 하단 가장자리에 정렬된 맞춤 컨트롤을 지정할 수 있습니다. 앱에서 맞춤 컨트롤을 추가하면 다시 가운데 맞춤 버튼과 Google 로고가 맞춤 컨트롤에 맞게 위로 이동합니다.
- 추가하려는 UI 요소 또는 뷰 그룹으로 Android 뷰를 만듭니다.
- 탐색 뷰 또는 프래그먼트를 만듭니다.
- 탐색 뷰나 프래그먼트에서
setCustomControl
메서드를 호출하고 사용할 컨트롤과 위치를 지정합니다.
다음 예는 NavigationFragment
에 추가된 맞춤 View
를 보여줍니다.
private NavigationFragment mNavFragment;
mNavFragment = (NavigationFragment)
getFragmentManager().findFragmentById(R.id.navigation_fragment);
// Create the custom control view.
MyCustomView myCustomView = new MyCustomView();
// Add the custom control to the bottom end corner of the layout.
mNavFragment.setCustomControl(myCustomView, CustomControlPosition.
BOTTOM_END_BELOW);
맞춤 컨트롤 삭제
맞춤 컨트롤을 삭제하려면 setCustomControl
메서드를 사용하고 삭제하려는 컨트롤의 위치를 지정합니다.
해당 위치의 뷰를
null
로 설정합니다.mNavFragment.setCustomControl(null, CustomControlPosition.BOTTOM_END_BELOW);