Android setX() et séthi() se comportent bizarre
Je suis en train de créer dynamiquement et ensuite de déplacer une image dans un Android activité. Cependant, la setX() et séthi() les méthodes qui semblent ne pas fonctionner correctement. Il définit correctement la position d'une image lorsqu'elle est d'abord créé et placé, mais toute tentative de mise à jour il en résulte l'image d'être placé dans le mauvais endroit. Par exemple, l'image se déplace sur le code suivant:
ImageView image;
RelativeLayout layout = (RelativeLayout)findViewById(R.id.activity_this);
if(action == MotionEvent.ACTION_DOWN){
image = new ImageView(MyClass.this);
layout.addView(image, width, height);
image.setX(206);
image.setY(206);
}
else if(action == MotionEvent.ACTION_MOVE){
if(image != null){
image.setX(206);
image.setY(206);
}
}
Sur ACTION_MOVE l'image est déplacée même si la position x et y les valeurs restent les mêmes. Le parent de l'image reste la même. La taille reste la même. Si j'obtiens les valeurs x et y, il va encore dire 206, mais il n'est pas placé au (206, 206) sur l'activité plus. Je suis perdu pour expliquer ce qui se passe. Je ne peux pas trouver la moindre indication que l'image a été modifiée, sauf pour elle de changer physiquement emplacement.
Vous devez vous connecter pour publier un commentaire.
Vraiment, cela ne devrait pas se produire. Sinon, essayez de fixer une autre variable et la configuration de x et y, ou d'avoir x et y obtenir et ajouter un 0 à chacun d'eux pour le même emplacement.
Comme indiqué dans Android - Utilisation de la vue.setX() et séthi de l'api de 8, si vous avez effectué une recherche, il y a une autre solution qui fonctionne aussi avant même de l'api 8.
LayoutParams
les œuvres de ce genre -Il n'y a plus de renseignements. J'espère que cette aide
Exécuter dans le même problème.
View.setLeft(int)/View.setTop(int)
a fonctionné pour moi.Noter que depuis le post original de cette réponse, les choses ont changé et sur les plus récentes versions d'android, il peut produire des résultats inattendus, tout ça a fait l'affaire pour moi sur les anciennes versions. Donc, si vous ciblez les anciens appareils (android 3.0 et ci-dessous) cela peut aider, mais pour une solution générique, veuillez envisager d'autres réponses ici.
Est votre activité en mode plein écran? Si pas d'essayer de le faire en plein écran et il faut résoudre votre problème.
Assez en retard pour répondre, mais si quelqu'un est confronté au même problème. Cela fixe, pour moi, c'était le paddings dans le fichier de layout:
Comme quelqu'un qui fait face à ce problème, j'ai de résoudre ce problème en supprimant toute rembourrage dans la parentView. Le rembourrage semblent provoquer un changement dans le format de mise en page