Commandes personnalisées

À l'aide de commandes personnalisées, vous pouvez ajouter vos propres éléments d'interface utilisateur au-dessus de la vue de navigation. Le SDK Navigation repositionne automatiquement vos commandes personnalisées à mesure que la mise en page intégrée change.

Vous pouvez définir une commande personnalisée pour chaque position. La commande personnalisée peut être un élément d'interface utilisateur ou, si votre conception nécessite davantage d'éléments, vous pouvez utiliser un élément ViewGroup avec plusieurs éléments d'interface utilisateur.

La méthode setCustomControl fournit des positions telles que définies dans l'énumération CustomControlPosition:

  • SECONDARY_HEADER (n'apparaît qu'en mode Portrait)
  • BOTTOM_START_BELOW
  • BOTTOM_END_BELOW

L'image ci-dessous présente des exemples de chaque position dans l'emplacement d'une commande d'interface utilisateur informant le conducteur de l'emplacement d'un usager.

Positions des commandes personnalisées

Ajouter une commande personnalisée sous l'en-tête principal

Par défaut, les mises en page affichent une flèche Ensuite ou une indication de voie sous l'en-tête principal. Votre application peut remplacer la mise en page par défaut par une commande personnalisée définie à la position d'en-tête secondaire. Cette commande remplace le contenu par défaut au-dessus de la vue de navigation. Si votre vue dispose d'un arrière-plan, celui-ci reste en place. Lorsque votre application supprime le contenu personnalisé, le contenu par défaut apparaît à sa place.

Cette position se trouve sous l'en-tête principal de la carte, avec le bord supérieur aligné sur le bord inférieur de l'en-tête principal. L'en-tête secondaire par défaut est masqué. Ce positionnement n'est accepté que dans portrait mode. Dans landscape mode, l'en-tête secondaire n'est pas disponible et la mise en page ne change pas.

  1. Créez une vue Android avec l'élément d'interface utilisateur personnalisé ou le ViewGroup.
  2. Gonflez le fichier XML ou instanciez la vue personnalisée pour obtenir une instance de la vue à ajouter en tant qu'en-tête secondaire.
  3. Utilisez NavigationView.setCustomControl ou NavigationFragment.setCustomControl avec CustomControlPosition en tant que SECONDARY_HEADER.

    L'exemple ci-dessous crée un fragment et ajoute une commande personnalisée à la position de l'en-tête secondaire.

     mNavFragment.setCustomControl(getLayoutInflater().
       inflate(R.layout.your_custom_control, null),
          CustomControlPosition.SECONDARY_HEADER);
    

Supprimer un en-tête secondaire

Lorsque vous souhaitez supprimer l'en-tête secondaire et revenir au contenu par défaut, utilisez la méthode setCustomControl.

  • Définissez la vue sur "null" pour la supprimer.

    mNavFragment.setCustomControl(null, CustomControlPosition.SECONDARY_HEADER);
    

Ajouter une commande personnalisée en haut de la vue de navigation

Votre application peut spécifier une commande personnalisée alignée sur le bord inférieur de la vue. Lorsque votre application ajoute la commande personnalisée, le bouton de recentrage et le logo Google se déplacent vers le haut pour s'adapter à la commande personnalisée.

  1. Créez une vue Android avec l'élément d'interface utilisateur ou le groupe de vues que vous souhaitez ajouter.
  2. Créez la vue ou le fragment de navigation.
  3. Appelez la méthode setCustomControl sur la vue de navigation ou le fragment, puis spécifiez la commande et la position à utiliser.

L'exemple suivant montre un View personnalisé ajouté à un NavigationFragment:

  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);

Supprimer une commande personnalisée

Lorsque vous souhaitez supprimer la commande personnalisée, utilisez la méthode setCustomControl et spécifiez sa position.

  • Définissez la vue sur null pour cette position.

    mNavFragment.setCustomControl(null, CustomControlPosition.BOTTOM_END_BELOW);