2011-04-04 2 views
4

J'essaie d'implémenter le comportement StackView dans mon application, mais je crois que ce widget n'est disponible qu'à partir d'android 3.0. Je suis un développeur intermédiaire pour Android OS et par conséquent j'ai des connaissances limitées sur les vues personnalisées.Autres vues à la place de Stackviews pour les versions Android inférieures à Android 3.0

Pourriez-vous s'il vous plaît fournir quelques pointeurs sur la façon dont je peux atteindre Stackview dans Android 2.2/2.3?

+0

Au moins quelques-unes des questions précédentes que vous avez posées ont reçu une réponse complète. Veuillez marquer les réponses données comme correctes si elles l'étaient, ou ajouter un commentaire expliquant les problèmes que vous avez eu avec la réponse. –

Répondre

7

Il n'y a aucun composant dans le SDK avec cette fonctionnalité exacte avant API Niveau 11 (3.0), vous devrez donc créer votre propre vue personnalisée pour obtenir l'effet désiré. Le moyen le plus simple/le plus rapide serait de créer une vue personnalisée qui étend FrameLayout car les enfants d'un FrameLayout s'empilent automatiquement les uns sur les autres et votre vue personnalisée héritera de ce comportement. Vous souhaiterez également remplacer la façon dont les enfants sont disposés de sorte que vous ajustiez la position x et y des enfants en fonction de leur emplacement dans la pile.

Vous devrez créer vos propres méthodes pour passer à la vue suivante/précédente - vous devrez le faire en ré-ordonnant les vues enfant (les supprimer toutes, puis les rajouter dans la nouvelle commande) .

La solution que j'ai décrite n'inclut pas le recyclage de vue obtenu avec AdapterViews, donc ne conviendrait pas à un grand nombre d'éléments empilés. Vous pouvez aussi trouver le code source de StackView et le copier dans votre projet, mais cela impliquera probablement aussi de copier une grande quantité d'autres classes Android dans votre projet, puisque StackView accédera sans aucun doute aux membres privés des super-classes qui sont seulement accessible depuis le package widgets (sans Reflection).

+0

Merci Joesph ... Mais copier le code source de stackview ne fonctionnerait que pour Android 3.0 ou supérieur? –

+0

Non, il pourrait certainement fonctionner sur les versions antérieures (à moins qu'il ne repose sur des fonctionnalités natives qui ont changé), mais vous devrez copier toutes les classes que les références StackView qui sont dans 3.0 mais pas dans les versions antérieures dans votre projet. Cela impliquerait donc beaucoup de copier des classes dans votre projet, et beaucoup d'éditer ces classes pour changer les références à vos versions des classes et pas celles d'Android qui n'existent pas. –

+0

Fondamentalement ne descendez pas la route de copie directe, c'est probablement plus de travail que de regarder le code StackView, comprendre ce qu'il fait, et puis faire le vôtre; parce que vous aurez besoin de copier et d'éditer beaucoup de fichiers afin de le faire fonctionner. –

Questions connexes