Con i controlli personalizzati, puoi aggiungere i tuoi elementi dell'interfaccia utente sopra la visualizzazione di navigazione. L'SDK di navigazione riposiziona automaticamente i controlli personalizzati quando cambia il layout integrato.
Puoi impostare un controllo personalizzato per ogni posizione. Il controllo personalizzato può essere costituito da un solo elemento UI oppure, se il tuo design richiede più elementi, puoi utilizzare un elemento ViewGroup
con più elementi UI.
Il metodo setCustomControl
fornisce le posizioni come definite nell'enumerazione CustomControlPosition
:
SECONDARY_HEADER
(visualizzato solo in modalità verticale)BOTTOM_START_BELOW
BOTTOM_END_BELOW
Nell'immagine di seguito puoi vedere esempi di ogni posizione nel posizionamento di un controllo UI che comunica al conducente la posizione di un passeggero.
Aggiungi un controllo personalizzato sotto l'intestazione principale
Per impostazione predefinita, i layout mostrano una Freccia poi o un'indicazione delle corsie sotto l'intestazione principale. La tua app può sostituire il layout predefinito con un controllo personalizzato impostato nella posizione dell'intestazione secondaria. Questo controllo sostituisce i contenuti predefiniti nella visualizzazione di navigazione. Se la visualizzazione ha uno sfondo, quest'ultimo rimane posizionato. Quando l'app rimuove i contenuti personalizzati, i contenuti predefiniti verranno visualizzati al suo posto.
Questa posizione si trova sotto l'intestazione principale della mappa, con il bordo superiore allineato con il bordo inferiore dell'intestazione principale. L'intestazione secondaria predefinita è nascosta. Questa posizione è supportata solo in portrait mode
. In landscape mode
, l'intestazione
secondaria non è disponibile e il layout non cambia.
- Crea una vista Android con l'elemento UI personalizzato o ViewGroup.
- Aumenta il codice XML o crea un'istanza della vista personalizzata per aggiungere un'istanza della vista come intestazione secondaria.
Utilizza
NavigationView.setCustomControl
oNavigationFragment.setCustomControl
con CustomControlPosition come SECONDARY_HEADER.L'esempio seguente crea un frammento e aggiunge un controllo personalizzato nella posizione dell'intestazione secondaria.
mNavFragment.setCustomControl(getLayoutInflater(). inflate(R.layout.your_custom_control, null), CustomControlPosition.SECONDARY_HEADER);
Rimuovere un'intestazione secondaria
Quando vuoi rimuovere l'intestazione secondaria e tornare ai contenuti predefiniti, utilizza il metodo setCustomControl
.
Imposta la vista su null per rimuoverla.
mNavFragment.setCustomControl(null, CustomControlPosition.SECONDARY_HEADER);
Aggiungere un controllo personalizzato nella parte superiore della visualizzazione di navigazione
La tua app può specificare un controllo personalizzato allineato al bordo inferiore della vista. Quando nell'app viene aggiunto il controllo personalizzato, il pulsante riposiziona il pulsante e il logo Google vengono spostati per ospitarlo.
- Crea una vista Android con l'elemento UI o il gruppo di visualizzazioni che vuoi aggiungere.
- Crea la visualizzazione di navigazione o il frammento.
- Richiama il metodo
setCustomControl
nella visualizzazione o nel frammento di navigazione e specifica il controllo e la posizione da utilizzare.
L'esempio seguente mostra un elemento View
personalizzato aggiunto a 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);
Rimuovere un controllo personalizzato
Quando vuoi rimuovere il controllo personalizzato, utilizza il metodo setCustomControl
e specifica la posizione del controllo da rimuovere.
Imposta la visualizzazione su
null
per quella posizione.mNavFragment.setCustomControl(null, CustomControlPosition.BOTTOM_END_BELOW);