カスタム コントロールを使用すると、ナビゲーション ビューの上に独自の UI 要素を追加できます。Navigation SDK により、組み込みのレイアウトが変更されると、カスタム コントロールが自動的に再配置されます。
位置ごとに 1 つのカスタム コントロールを設定できます。カスタム コントロールは 1 つの UI 要素にすることができますが、設計上より多くの UI 要素が必要な場合は、複数の UI 要素を含む ViewGroup
を使用することもできます。
setCustomControl
メソッドは、CustomControlPosition
列挙型で定義されている位置を指定します。
SECONDARY_HEADER
(縦表示でのみ表示)BOTTOM_START_BELOW
BOTTOM_END_BELOW
以下の画像では、運転手に乗客の現在地を通知する UI コントロールの配置例を示しています。
メインヘッダーの下にカスタム コントロールを追加する
デフォルトでは、レイアウトではプライマリ ヘッダーの下に [Then 矢印] または [車線案内] が表示されます。アプリでは、デフォルト レイアウトを、セカンダリ ヘッダーの位置に設定されたカスタム コントロールに置き換えることができます。このコントロールは、ナビゲーション ビューの上にあるデフォルトのコンテンツを置き換えるものです。ビューに背景がある場合、その背景はそのまま維持されます。アプリがカスタム コンテンツを削除すると、デフォルトのコンテンツがその場所に表示されます。
この位置はメインの地図ヘッダーより下で、上端がメイン ヘッダーの下端に揃えられます。デフォルトのセカンダリ ヘッダーは非表示です。この位置は portrait mode
でのみサポートされています。landscape mode
では、セカンダリ ヘッダーは使用できず、レイアウトは変更されません。
- カスタム UI 要素または ViewGroup を使用して、Android ビューを作成します。
- XML をインフレートするか、カスタムビューをインスタンス化して、セカンダリ ヘッダーとして追加するビューのインスタンスを取得します。
NavigationView.setCustomControl
またはNavigationFragment.setCustomControl
を、SECONDARY_HEADER として CustomControlPosition とともに使用します。以下の例では、フラグメントを作成し、セカンダリ ヘッダーの位置にカスタム コントロールを追加しています。
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);