Com controles personalizados, você pode adicionar seus próprios elementos de IU sobre a visualização de navegação. O SDK do Navigation reposiciona automaticamente os controles personalizados à medida que o layout integrado muda.
Para cada posição, é possível definir um controle personalizado. O controle personalizado pode ser um
elemento da interface ou, se o design exigir mais, você pode usar uma ViewGroup
com
vários elementos de interface.
O método setCustomControl
fornece posições conforme definido no enum CustomControlPosition
:
SECONDARY_HEADER
(aparece apenas em modo retrato)BOTTOM_START_BELOW
BOTTOM_END_BELOW
Na imagem abaixo, você pode ver exemplos de cada posição de um controle de interface que informa ao motorista a localização de um passageiro.
Adicionar um controle personalizado abaixo do cabeçalho principal
Por padrão, os layouts exibem uma seta Depois ou uma orientação sobre faixa abaixo do cabeçalho principal. O app pode substituir o layout padrão por um controle personalizado definido na posição secundária do cabeçalho. Esse controle substitui o conteúdo padrão na parte superior da visualização de navegação. Se sua visualização tiver um plano de fundo, ele permanecerá no lugar. Quando seu app remove o conteúdo personalizado, o conteúdo padrão aparece no lugar.
Essa posição fica abaixo do cabeçalho do mapa principal, com a borda superior alinhada com a borda inferior dele. O cabeçalho secundário padrão fica oculto. Essa
posição só tem suporte em portrait mode
. Em landscape mode
, o cabeçalho
secundário não está disponível, e o layout não muda.
- Crie uma visualização do Android com o elemento de interface personalizada ou um ViewGroup.
- Infle o XML ou instancie a visualização personalizada para receber uma instância da visualização e adicioná-la como cabeçalho secundário.
Use
NavigationView.setCustomControl
ouNavigationFragment.setCustomControl
com CustomControlPosition como SECARY_HEADER.O exemplo abaixo cria um fragmento e adiciona controle personalizado na posição do cabeçalho secundário.
mNavFragment.setCustomControl(getLayoutInflater(). inflate(R.layout.your_custom_control, null), CustomControlPosition.SECONDARY_HEADER);
Remover um cabeçalho secundário
Quando quiser remover o cabeçalho secundário e retornar ao conteúdo padrão,
use o método setCustomControl
.
Defina a visualização como nula para removê-la.
mNavFragment.setCustomControl(null, CustomControlPosition.SECONDARY_HEADER);
Adicionar um controle personalizado na visualização de navegação
Seu app pode especificar um controle personalizado alinhado com a borda inferior da visualização. Quando o app adiciona o controle personalizado, o botão recentralizar e o logotipo do Google se movem para acomodar o controle personalizado.
- Crie uma visualização do Android com o elemento da interface ou o grupo de visualizações que você quer adicionar.
- Criar a visualização ou o fragmento de navegação.
- Chame o método
setCustomControl
na visualização ou no fragmento de navegação e especifique o controle e a posição a serem usados.
O exemplo a seguir mostra um View
personalizado adicionado a um 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);
Remover um controle personalizado
Quando quiser remover o controle personalizado, use o método setCustomControl
e especifique a posição do controle.
Defina a visualização como
null
para essa posição.mNavFragment.setCustomControl(null, CustomControlPosition.BOTTOM_END_BELOW);