Controles personalizados

Com os controles personalizados, você pode adicionar seus próprios elementos de interface na parte de cima da visualização de navegação. O SDK do Navigation reposiciona automaticamente os controles personalizados à medida que o layout integrado muda.

Para cada posição, você pode definir um controle personalizado. O controle personalizado pode ser um elemento da interface ou, se o design exigir mais, você pode usar um ViewGroup com vários elementos.

O método setCustomControl fornece posições conforme definido no tipo enumerado CustomControlPosition:

  • SECONDARY_HEADER (aparece apenas no modo retrato)
  • BOTTOM_START_BELOW
  • BOTTOM_END_BELOW

Na imagem abaixo, você pode ver exemplos de cada posição no posicionamento de um controle de interface que informa ao motorista a localização de um passageiro.

Posições de controles personalizados

Adicionar um controle personalizado abaixo do cabeçalho principal

Por padrão, os layouts exibem uma seta Em seguida ou uma orientação de faixa abaixo do cabeçalho principal. Seu app pode substituir o layout padrão por um controle personalizado definido na posição do cabeçalho secundário. Esse controle substitui o conteúdo padrão na parte superior da visualização de navegação. Se sua visualização tem um plano de fundo, ele permanece no lugar. Quando o app remove o conteúdo personalizado, o conteúdo padrão aparece no lugar dele.

Essa posição fica abaixo do cabeçalho principal do mapa, com a borda superior alinhada com a borda inferior. 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.

  1. Crie uma visualização do Android com o elemento de IU personalizado ou com o ViewGroup.
  2. Infle o XML ou instancie a visualização personalizada para receber uma instância da visualização a ser adicionada como cabeçalho secundário.
  3. Use NavigationView.setCustomControl ou NavigationFragment.setCustomControl com CustomControlPosition como SECONDARY_HEADER.

    O exemplo abaixo cria um fragmento e adiciona um 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 você 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 parte superior da visualização de navegação

O app pode especificar um controle personalizado alinhado com a borda de baixo 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.

  1. Crie uma visualização do Android com o elemento da interface ou o grupo de visualizações que você quer adicionar.
  2. Criar a visualização ou o fragmento de navegação.
  3. 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

Para remover o controle personalizado, use o método setCustomControl e especifique a posição do controle que você quer remover.

  • Defina a visualização como null para essa posição.

    mNavFragment.setCustomControl(null, CustomControlPosition.BOTTOM_END_BELOW);