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