2010-10-04 3 views
2

J'écris une application qui a besoin de travailler sur une variété d'appareils Android, chacun avec leur propre thème propre à l'opérateur. Malheureusement, les thèmes d'onglet pour chaque périphérique sont incompatibles --- stock Android utilise l'arrière-plan clair et l'avant-plan sombre pour l'onglet sélectionné, mais le HTC Desire utilise un arrière-plan sombre, un avant-plan clair, ce qui signifie que les icônes conçues pour l'un semblent mal de l'autre. (De plus, les thèmes du HTC Desire ont un bug où ils ont oublié de définir la couleur de premier plan pour les onglets sélectionnés, ce qui signifie que ce que vous obtenez est dark-background, dark-foreground. mais je l'ai observé cela dans plusieurs applications utilisateur)Corriger l'apparence de l'onglet Android sur toutes les plateformes?

Ainsi, afin de rendre l'apparence de bonne application sur tous les appareils, je me dis que j'ai deux options réelles:.

  • personnalisons complètement mon onglet thème donc nous ne comptons pas sur le thème du système du tout

  • autre

Je préfère ne pas faire le premier parce que c'est pourquoi notre application ne correspondra pas aux autres applications sur le périphérique. Mais à moins d'une manière intelligente de contourner ce problème, c'est ce que je vais devoir faire. Aucune suggestion? Je ne peux pas être la première personne à le rencontrer. Existe-t-il, par exemple, un moyen de faire en sorte qu'Android change automatiquement la couleur des icônes? De plus, il y a un problème sur lequel je travaille encore, à savoir que les applications système semblent afficher des onglets différents des applications utilisateur: il doit y avoir un réglage de thème quelque part que je n'ai pas encore trouvé, mais après avoir récuré la source code 0.)

+0

icônes Tab doivent être 'StateListDrawables' avec paramètres d'opacité à fusionner avec l'arrière-plan de l'onglet - voir http://developer.android.com/guide/practices/ui_guidelines/icon_design.html#tabstructure. À cet égard, Android "changera automatiquement la couleur des icônes". Je ne sais pas si c'est ce que vous aviez en tête, cependant. – CommonsWare

+0

Oui, nous le faisons déjà --- mais la couleur des données d'image réelles est toujours fixée. Ainsi, bien que nous puissions voir la couleur d'arrière-plan des onglets à travers les parties transparentes de l'icône, l'icône de premier plan reste inchangée sur différents thèmes. Si l'icône est sombre (quand elle est sélectionnée) et légère (quand elle n'est pas sélectionnée), cela n'aidera pas si le thème attend une icône lumineuse quand elle est sélectionnée. –

Répondre

0

Si vous voulez supporter toutes les versions Android (1.5+), la première option est la solution la plus simple.

Les applications système (par exemple, l'application Contacts) utilisent des onglets personnalisés. Jetez un coup d'oeil ici: https://android.googlesource.com/platform/packages/apps/Contacts (par exemple la recherche pour "tab_" dans ces dossiers: res/layout doigts, res/drawable doigts, res/drawable-hdpi doigts)

+0

Malheureusement, le contenu de l'onglet personnalisé de l'application Contacts n'est pas terminé et n'est pas utilisé --- ContactsUtils.createTabIndicatorView() n'est pas appelé de n'importe où! De plus, l'éditeur de signets de l'application Browser a un code de tabulation complètement standard, pas d'interface utilisateur personnalisée, et pourtant il apparaît aussi dans le style de l'application système ... –

+0

Hmm ... vous semblez avoir raison. En passant, une autre chose qui affecte le style des onglets est le "android: targetSdkVersion" de votre fichier manifeste. Par exemple, si vous le définissez sur 7, vous obtenez un autre style qu'avec 6. – Edi

+0

Oui, je viens de le trouver moi-même. Très ... intuitif! Au moins ce mystère est expliqué. Il semble également qu'aucune des applications du système HTC Desire n'utilise les onglets standards, donc je ne peux pas comparer pour voir à quoi ils ressemblent. Le guide de style Froyo standard est pratiquement illisible sur le HTC Desire ... –

Questions connexes