2 votes

Bogue Android 2.1 : utilisation de res/layout-v3 au lieu de res/layout

En plus de l'aspect général res/layout J'ai un dossier res/layout-v3 pour assurer la rétrocompatibilité avec Android 1.5, qui présente des problèmes avec certains RelativeLayout les mises en page.

Il fonctionne parfaitement avec tous les téléphones et versions d'émulateur testés donc jusqu'à présent. Sauf la 2.1 (émulateur et Nexus One). Ils choisissent d'afficher la disposition d'Android 1.5 ( res/layout-v3 ) au lieu de l'option par défaut res/ layout .

Quelqu'un d'autre peut-il le confirmer ? S'agit-il d'un bug du système d'exploitation Android ? Si oui, où est le meilleur endroit pour soumettre le rapport de bogue ?

Gracias


UPDATE :

Après avoir lu sur http://developer.Android.com/intl/fr/guide/practices/screens_support.html#qualifiers à nouveau (merci Mark pour l'indication), en particulier cette partie

Les ressources qui sont destinées à être utilisées uniquement sur un niveau d'API spécifique ou supérieur. Pour exemple, si votre application est conçue pour fonctionner à la fois sur Android 1.5 (API Niveau 3) et Android 1.6 (API 4 et plus), vous pouvez utiliser le qualificateur -v4 pour marquer toutes les ressources qui doivent être exclues lorsque votre application est exécutée sur Android 1.5 (niveau 3 de l'API).

J'ai modifié l'ordre de ma mise en page en passant de

  • res/layout-v3 (pour Android 1.5 uniquement -> c'est une hypothèse erronée que j'ai faite)
  • res/layout (pour tout le reste)

à ma nouvelle configuration d'avoir :

  • res/layout-v4 (pour Android 1.6 et plus)
  • res/layout (pour tout autre chose -> dans ce cas, il s'agirait uniquement d'Android 1.5)

Si je comprends bien la documentation ci-dessus et si mes hypothèses entre parenthèses sont correctes cette fois, cela devrait fonctionner maintenant. Cependant, le résultat est le suivant :

  • Android 1.5 utilise res/layout -> OK
  • Android 1.6 utilise res/layout-v4 -> OK
  • Android 2.0 utilise res/layout -> PAS OK
  • Android 2.1 utilise res/layout-v4 -> OK

Alors pourquoi Android 2.0 (sur l'émulateur et le Motorola Milestone) ne choisit pas le bon dossier de ressources de mise en page ?

Je l'ai testé à nouveau avec la version 2.0.1 et il semble que cela fonctionne. Il s'agit donc d'un bogue de la version 2.0 qui a été corrigé dans la version 2.0.1.

Mais maintenant, la chose la plus étrange : afin de le faire fonctionner d'une manière ou d'une autre sur 2.0, j'ai copié le dossier res/layout-v4 vers res/layout-v5 pour forcer Android 2.0 à utiliser cette ressource de mise en page. Cela n'a pas fonctionné. Mais ensuite j'ai essayé de le copier dans res/layout-v6 (qui est supposé être Android 2.0.1) et voilà, tout d'un coup ça fonctionne avec 2.0. Très étrange ! Mais j'espère que cette solution de contournement aidera quelques autres personnes.

4voto

dtmilano Points 26472

J'ai testé plusieurs appareils et émulateurs (mais pas de manière très approfondie), et il semble que le dossier de ressources sélectionné soit celui qui contient l'attribut version supérieure <= version du dispositif .

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X