맞춤 컨트롤

맞춤 컨트롤을 사용하면 탐색 뷰 상단에 자체 UI 요소를 추가할 수 있습니다. Navigation SDK는 기본 제공 레이아웃이 변경되면 맞춤 컨트롤의 위치를 자동으로 조정합니다.

각 위치에 대해 하나의 맞춤 컨트롤을 설정할 수 있습니다. 맞춤 컨트롤은 하나의 UI 요소일 수 있습니다. 또는 디자인에 더 많은 요소가 필요한 경우 ViewGroup를 여러 UI 요소와 함께 사용할 수 있습니다.

setCustomControl 메서드CustomControlPosition enum에 정의된 대로 위치를 제공합니다.

  • SECONDARY_HEADER (세로 모드로만 표시됨)
  • BOTTOM_START_BELOW
  • BOTTOM_END_BELOW

아래 이미지에서는 운전자에게 탑승자의 위치를 알려주는 UI 컨트롤의 배치에서 각 위치의 예를 확인할 수 있습니다.

맞춤 컨트롤 위치

기본 헤더 아래에 맞춤 컨트롤 추가

기본적으로 레이아웃에서는 기본 헤더 아래에 다음 화살표 또는 차선 안내를 표시합니다. 앱에서 기본 레이아웃을 보조 헤더 위치에 설정된 맞춤 컨트롤로 바꿀 수 있습니다. 이 컨트롤은 탐색 뷰 상단의 기본 콘텐츠를 대체합니다. 뷰에 배경이 있으면 이 배경은 그대로 유지됩니다. 앱에서 맞춤 콘텐츠를 삭제하면 기본 콘텐츠가 대신 표시됩니다.

이 위치는 기본 지도 헤더 아래에 있으며, 상단 가장자리는 기본 헤더의 하단 가장자리에 정렬됩니다. 기본 보조 헤더는 숨겨져 있습니다. 이 위치는 portrait mode에서만 지원됩니다. landscape mode에서는 보조 헤더를 사용할 수 없으며 레이아웃은 변경되지 않습니다.

  1. 맞춤 UI 요소 또는 ViewGroup을 사용하여 Android 뷰를 만듭니다.
  2. xml을 확장하거나 맞춤 뷰를 인스턴스화하여 보조 헤더로 추가할 뷰 인스턴스를 가져옵니다.
  3. 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 로고가 맞춤 컨트롤에 맞게 위로 이동합니다.

  1. 추가하려는 UI 요소 또는 뷰 그룹으로 Android 뷰를 만듭니다.
  2. 탐색 뷰 또는 프래그먼트를 만듭니다.
  3. 탐색 뷰나 프래그먼트에서 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);