Benutzerdefinierte Steuerelemente

Mit benutzerdefinierten Steuerelementen können Sie Ihrer Navigationsansicht eigene UI-Elemente hinzufügen. Das Navigation SDK positioniert Ihre benutzerdefinierten Steuerelemente automatisch neu, wenn sich das integrierte Layout ändert.

Sie können für jede Position ein benutzerdefiniertes Steuerelement festlegen. Das benutzerdefinierte Steuerelement kann ein UI-Element sein. Wenn Ihr Design mehr erfordert, können Sie ein ViewGroup mit mehreren UI-Elementen verwenden.

Die Methode setCustomControl stellt Positionen bereit, die in CustomControlPosition-Enum definiert sind:

  • SECONDARY_HEADER (nur im Hochformat)
  • BOTTOM_START_BELOW
  • BOTTOM_END_BELOW

In der folgenden Abbildung sehen Sie Beispiele für jede Position in der Platzierung eines UI-Steuerelements, das den Fahrer über den Standort eines Fahrgasts informiert.

Positionen von benutzerdefinierten Steuerelementen

Fügen Sie ein benutzerdefiniertes Steuerelement unter dem primären Header hinzu

Standardmäßig wird in Layouts der Pfeil Dann oder Spurführung unter dem primären Titel angezeigt. Ihre Anwendung kann das Standardlayout durch ein benutzerdefiniertes Steuerelement in der Position des sekundären Headers ersetzen. Dieses Steuerelement ersetzt den Standardinhalt oben in der Navigationsansicht. Wenn die Ansicht einen Hintergrund hat, bleibt dieser erhalten. Wenn Ihre App die benutzerdefinierten Inhalte entfernt, werden an ihrer Stelle die Standardinhalte angezeigt.

Diese Position befindet sich unterhalb des primären Kartenheaders, wobei der obere Rand am unteren Rand des primären Headers ausgerichtet ist. Der standardmäßige sekundäre Header ist ausgeblendet. Diese Position wird nur in portrait mode unterstützt. In landscape mode ist der sekundäre Header nicht verfügbar und das Layout ändert sich nicht.

  1. Erstellen Sie eine Android-Ansicht mit dem benutzerdefinierten UI-Element oder ViewGroup.
  2. Entpacken Sie den XML-Code oder instanziieren Sie die benutzerdefinierte Ansicht, um eine Instanz der Ansicht abzurufen, die als sekundärer Header hinzugefügt werden soll.
  3. Verwenden Sie NavigationView.setCustomControl oder NavigationFragment.setCustomControl mit CustomControlPosition als SECONDARY_HEADER.

    Im folgenden Beispiel wird ein Fragment erstellt und an der Position des sekundären Headers wird ein benutzerdefiniertes Steuerelement hinzugefügt.

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

Sekundären Header entfernen

Wenn Sie den sekundären Header entfernen und zum Standardinhalt zurückkehren möchten, verwenden Sie die Methode setCustomControl.

  • Legen Sie die Ansicht auf null fest, um die Ansicht zu entfernen.

    mNavFragment.setCustomControl(null, CustomControlPosition.SECONDARY_HEADER);
    

Benutzerdefiniertes Steuerelement oben in der Navigationsansicht hinzufügen

Für Ihre App kann ein benutzerdefiniertes Steuerelement angegeben werden, das am unteren Rand der Ansicht ausgerichtet ist. Wenn das benutzerdefinierte Steuerelement in Ihrer App hinzugefügt wird, verschieben sich die Schaltfläche „Neu zentrieren“ und das Google-Logo nach oben, um das benutzerdefinierte Steuerelement zu berücksichtigen.

  1. Erstellen Sie eine Android-Ansicht mit dem UI-Element oder der Ansichtsgruppe, die Sie hinzufügen möchten.
  2. Erstellen Sie die Navigationsansicht oder das Fragment.
  3. Rufen Sie die Methode setCustomControl in der Navigationsansicht oder dem Fragment auf und geben Sie das Steuerelement und die zu verwendende Position an.

Das folgende Beispiel zeigt eine benutzerdefinierte View, die einer NavigationFragment hinzugefügt wurde:

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

Benutzerdefiniertes Steuerelement entfernen

Wenn Sie das benutzerdefinierte Steuerelement entfernen möchten, verwenden Sie die Methode setCustomControl und geben Sie die Position des zu entfernenden Steuerelements an.

  • Setzen Sie die Ansicht für diese Position auf null.

    mNavFragment.setCustomControl(null, CustomControlPosition.BOTTOM_END_BELOW);