115 votes

Comment puis-je définir dynamiquement la position de vue dans Android ?

Comment puis-je changer la position de vue via le code ? Comme changer sa position X, Y. C'est possible?

123voto

Perishable Dave Points 1005

Pour tout ce qui est inférieur à Honeycomb (API niveau 11), vous devrez utiliser setLayoutParams(...) .

Si vous pouvez limiter votre support à Honeycomb et plus, vous pouvez utiliser les setX(...) , setY(...) , setLeft(...) , setTop(...) , etc.

50voto

AkashG Points 3073

Oui, vous pouvez définir dynamiquement la position de la vue dans Android. De même, vous avez un ImageView dans LinearLayout de votre fichier XML. Vous pouvez donc définir sa position via LayoutParams .Mais assurez-vous de prendre LayoutParams fonction de la mise en page prise dans votre fichier XML. Il existe différents LayoutParams selon la disposition prise.

Voici le code à paramétrer :

     LayoutParams layoutParams=new LayoutParams(int width, int height);
    layoutParams.setMargins(int left, int top, int right, int bottom);
    imageView.setLayoutParams(layoutParams);

18voto

Ben Points 111

Il existe une bibliothèque appelée NineOldAndroids , qui vous permet d'utiliser la bibliothèque d'animation Honeycomb jusqu'à la première version.

Cela signifie que vous pouvez définir gauche, droite, translationX/Y avec une interface légèrement différente.

Voici comment cela fonctionne :

 ViewHelper.setTranslationX(view, 50f);

Vous utilisez simplement les méthodes statiques de la classe ViewHelper, transmettez la vue et la valeur à laquelle vous souhaitez la définir.

17voto

sh1ftst0rm Points 2148

Je recommanderais d'utiliser setTranslationX et setTranslationY . Je viens juste de commencer moi-même, mais ceux-ci semblent être le moyen le plus sûr et le plus préféré de déplacer une vue. Je suppose que cela dépend beaucoup de ce que vous essayez de faire exactement, mais cela fonctionne bien pour moi pour l'animation 2D.

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