Controles personalizados

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.

Posições de controle personalizadas

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.

  1. Crie uma visualização do Android com o elemento de interface personalizada ou um ViewGroup.
  2. 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.
  3. Use NavigationView.setCustomControl ou NavigationFragment.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.

  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

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