237 votes

Définir l'ordre Z des vues de RelativeLayout dans Android

Je voudrais définir l'ordre z des vues d'un RelativeLayout dans Android.

Je sais qu'une façon de faire est d'appeler bringToFront .

Existe-t-il une meilleure façon de procéder ? Ce serait formidable si je pouvais définir l'ordre z dans le fichier xml de mise en page.

4 votes

View.bringToFront() ; est la réponse.

16voto

Vadim Kotov Points 1310

Veuillez noter que vous pouvez utiliser view.setZ(float) à partir du niveau 21 de l'API. Ici vous pouvez trouver plus d'informations.

16voto

ThePartyTurtle Points 758

J'ai pensé ajouter une réponse depuis l'introduction de l'application

Android:traductionZ

Le champ XML a un peu changé les choses. Les autres réponses qui suggèrent d'exécuter

childView1.bringToFront();

parentView.invalidate();

sont tout à fait exacts, SAUF que ce code n'amènera PAS childView1 devant une vue ayant un Android:translationZ codé en dur dans le fichier XML. J'avais des problèmes avec cela, et une fois que j'ai supprimé ce champ des autres vues, bringToFront() a fonctionné parfaitement.

7voto

Qamar Points 2182

L'API 21 a view.setElevation(float) intégré

Utilisez ViewCompat.setElevation(view, float); pour une compatibilité rétroactive

Plus de méthodes ViewCompat.setZ(v, pixels) et ViewCompat.setTranslationZ(v, pixels)

Une autre façon de collecter des boutons ou un tableau de vues et d'utiliser addView à ajouter à RelativeLayout

5voto

user1145905 Points 31

ChildView.bringToFront() n'a pas fonctionné pour moi, alors j'ai défini la translation Z de l'élément le moins récemment ajouté (celui qui recouvrait tous les autres enfants) à une valeur négative comme ceci :

lastView.setTranslationZ(-10);

voir https://developer.Android.com/reference/Android/view/View.html#setTranslationZ(float) pour plus

1voto

Petrov Dmitrii Points 183

Vous pouvez utiliser des RelativeLayout avec une redéfinition

protected int getChildDrawingOrder (int childCount, int i)

Attention, cette méthode prend le paramètre i comme "quelle vue dois-je dessiner i'th ". C'est ainsi que ViewPager fonctionne. Il définit l'ordre de dessin personnalisé en conjonction avec les éléments suivants PageTransformer .

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