2017-08-13 2 views
0

j'ai rencontré un problème étrange avec vue sur le positionnement ..Voir le positionnement en utilisant setX et setY

le code que j'ai est à peu près comme ceci:

FrameLayout frame = callback.getFrame(); 
CustomView v = new CustomView(getActivity()); 
frame.addView(v); 
v.setX(someX); 
v.setY(someY); 
//go on and do other stuff.. 

alors que le rappel est le MainActivity qui implémente une interface où j'ai mis la méthode getFrame(), qui retourne la FrameLayout déclarée dans le fichier layout principal.

J'ai aussi essayé d'utiliser une approche différente, comme mentionné ici Set the absolute position of a view

mais encore assez stangely sur l'émulateur la vue ne se montre au bon endroit, mais sur un périphérique réel, il n'a pas, i signifie non montré, ou montré au bord du FrameLayout.

je l'ai testé avec mon Nexus 5 téléphone, (LG, API 23) également sur un SAMSUNG 7J (API 25) avec le même résultat, et comme je l'ai mentionné, quand je le tester sur l'émulateur avec le même niveau d'API, les choses fonctionnent comme prévu. la seule "Solution" que j'ai inventée était d'animer() la vue qui le met où je voulais, mais ça ne me semble pas correct.

Quelqu'un a-t-il déjà rencontré ce problème? que devrais-je faire?

Répondre

0

bien après quelques pistes d'essais et d'erreurs, je suis venu à une solution pour cela, il semble que je besoin d'ajouter LayoutParams au CustomView

v.setLayoutParams(new FrameLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT, Gravity.NO_GRAVITY)); 

où le Gravity.NO_GRAVITY était la chose qui a fait la différence, maintenant la vue est ajoutée à l'emplacement correct, en utilisant des méthodes simples setX et setY ..