Question

J'ai besoin de créer un contrôle similaire à UITabBar dans l'iPhone, qui est d'être présent sur toutes les activités de ma demande. UITabBar est essentiellement une batterie de boutons présentant une comme comportement:. Tous les cartes de bouton à une activité

J'ai deux solutions pour cela:

  1. Dans le fichier XML de mise en page pour chaque activité, insérer un élément de <LinearLayout><Button/><Button/><Button/></LinearLayout>. Et alors une classe d'écoute commune qui gère les clics de bouton. Ainsi, chaque activité aura une instance de cet auditeur.

  2. Pour créer un Widget personnalisée extension classe LinearLayout, mettez tous les boutons que ses membres statiques et le laisser gérer les clics de bouton. Inclure ce contrôle personnalisé dans chaque écran.

Je ne suis pas sûr de l'approche à suivre. S'il vous plaît conseiller. Alternatives ont également apprécié

Ce qui suit est ce que je pense au sujet des approches ci-dessus:
Le problème avec la première approche:

  1. Il va générer beaucoup de code boilerplate (de findViewByIds, setOnClickListener etc.)

  2. Si l'on suppose qu'il y a 5 activités et 3 boutons de l'onglet, le nombre total d'objets Button créés à l'exécution sera de 5 x 3 = 15

Je voudrais prendre la 2ème approche parce que:

  1. Tout le code (état et le comportement) sera encapsulé par la classe widget. Moins de code boilerplate.

  2. Étant donné que les boutons seront membres statiques, le nombre total d'objets Button créés à l'exécution sera seulement trois. Bien que, les membres statiques restent en mémoire pour une période plus longue (jusqu'à la classe JVM décharge), puisque le contrôle est présent sur chaque écran, je pense que cela peut être excusée.

Merci.

Était-ce utile?

La solution 2

Malheureusement, je ne pouvais pas trouver un moyen de personnaliser l'TabWidget intégrée pour la faire ressembler à UITabBar. Alors, je vais créer un contrôle personnalisé et ont des boutons en tant que membres statiques (prendre la deuxième approche). Le contrôle se chargera des clics comme prévu.
J'ai remarqué que le primé Plink l'application L'art a aussi un contrôle onglet qui est similaire à l'iPhone UITabBar.

Autres conseils

Pourquoi ne pas simplement utiliser l'implémentation TabWidget existant dans Android?

http://developer.android.com/guide/tutorials /views/hello-tabwidget.html

Non seulement la mise en œuvre votre propre widget travail supplémentaire, il est susceptible de se sentir hors de comparaison avec d'autres applications sur la plate-forme.

Voici quelques problèmes que je vois en particulier:

  1. Quand le regard des changements de la barre d'onglet en raison d'une mise à jour du système, vous devrez ré-écrire votre code. Vous êtes également peu de chances de correspondre exactement à l'apparence de la construction dans la barre d'onglets. (Pensez à Java sur Mac OS X).

  2. Chaque fois qu'un utilisateur clique sur un onglet, il ajoutera une autre activité à la pile. Non seulement est-ce une perte de mémoire, mais chaque fois que l'utilisateur clique sur le bouton sur le téléphone, il ira à l'onglet précédent. Ce n'est pas la façon dont la barre d'onglets est censé fonctionner.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top