Pergunta

Além do general res/layout Pasta eu tenho um res/layout-v3Pasta para compatibilidade com versões anteriores com o Android 1.5, que tem problemas com alguns RelativeLayout layouts.

Funciona perfeitamente com todos os telefones e versões do emulador testadas até agora. Exceto 2.1 (emulador e nexus um). Eles optam por exibir o layout Android 1.5 (res/layout-v3) em vez do padrão res/ layout.

Alguém mais pode confirmar isso? Este é um bug do sistema operacional Android? Em caso afirmativo, onde é o melhor local para enviar o relatório de bug?


ATUALIZAR:

Depois de ler sobre https://developer.android.com/guide/practices/screens_support.html#qualifiers novamente (obrigado Mark pela dica), especialmente nesta parte

Recursos que são para uso apenas em um nível de API específico ou superior. Por exemplo, se o seu aplicativo for projetado para ser executado no Android 1.5 (API Nível 3) e Android 1.6 (API Nível 4 e Superior), você pode usar o qualificador -v4 para marcar quaisquer recursos que devem ser excluídos quando seu aplicativo estiver em execução no Android 1.5 (Nível 3 da API).

Eu mudei minha ordem de layout por ter

  • res/layout -v3 (apenas para Android 1.5 -> essa foi uma suposição errada que fiz)
  • res/layout (para qualquer outra coisa)

para minha nova configuração de ter:

  • res/layout-v4 (para Android 1.6 e superior)
  • res/layout (para qualquer outra coisa -> neste caso, seria apenas o Android 1.5)

Se eu entender a documentação acima corretamente e se minhas suposições nos parênteses estiverem corretas, desta vez, deve funcionar agora. No entanto, o resultado é o seguinte:

  • Android 1.5 está usando res/layout -> ok
  • Android 1.6 está usando res/layout -v4 -> ok
  • Android 2.0 está usando res/layout -> NÃO ESTÁ TUDO BEM
  • Android 2.1 está usando res/layout -v4 -> ok

Então, por que o Android 2.0 (no emulador e na Motorola Milestone) não está escolhendo a pasta de recursos de layout certa?

Eu o testei novamente com 2.0.1 e parece funcionar lá. Então isso parece ser um bug em 2.0 que foi corrigido em 2.0.1

Mas agora a coisa mais estranha: para fazer de alguma forma o 2.0, copiei a pasta RES/Layout-V4 para res/layout-v5 para forçar o Android 2.0 usando esse recurso de layout. Não funcionou. Mas então eu tentei copiá-lo para res/layout-v6 (que deveria ser o Android 2.0.1) e o voilà, de repente, funciona com 2.0. Muito estranho! Mas espero que essa solução alternativa ajude algumas outras pessoas por aí.

Foi útil?

Solução

Eu testei vários dispositivos e emuladores (embora não muito bem), e parece que a pasta de recursos selecionada é aquela com o versão superior <= versão do dispositivo.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top