Android setX () y setY () comportándose de manera extraña

Estoy tratando de crear y mover dinámicamente una imagen en una actividad de Android. Sin embargo, los métodos setX () y setY () parecen no funcionar correctamente. Establece correctamente la posición de una imagen cuando se crea y se coloca por primera vez, pero cualquier intento de actualizarla da lugar a que la imagen se coloque en el lugar equivocado. Por ejemplo, la imagen se mueve en el código siguiente:

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); } } 

En ACTION_MOVE la imagen se mueve aunque los valores de posición xey permanezcan iguales. El padre de la imagen sigue siendo el mismo. El tamaño sigue siendo el mismo. Si obtengo los valores de xey, diré 206, pero no se colocará en (206, 206) en la actividad. Estoy perdido en cuanto a por qué esto está sucediendo. No puedo encontrar ninguna indicación de que la imagen haya sido alterada, excepto por su ubicación física.

Realmente, esto no debería estar sucediendo. Alternativamente, pruebe a establecer otra variable y establezca xey en ella, o bien obtenga xy obtenga y agregue un 0 a cada uno de ellos para la misma ubicación.

Como se indica en Android – Uso de view.setX () y setY en api 8 , si ha buscado, hay otra solución que también funciona incluso antes de api 8. LayoutParams funciona de esta manera –

 RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT); //WRAP_CONTENT param can be FILL_PARENT params.leftMargin = 206; //XCOORD params.topMargin = 206; //YCOORD childView.setLayoutParams(params); 

Hay más información allí. espero que esto ayude

Ejecutar en el mismo problema. View.setLeft(int)/View.setTop(int) funcionó para mí

¿Está tu actividad en modo de pantalla completa? Si no intenta hacerlo a pantalla completa y debería resolver su problema.

Muy tarde para responder, pero si alguien está enfrentando el mismo problema. Esto lo arregló para mí que eran los acolchados en el archivo de diseño:

 android:paddingBottom="16dp" android:paddingLeft="16dp" android:paddingRight="16dp" android:paddingTop="16dp" 

Como alguien que en realidad frente a este problema, tengo resolver este problema mediante la eliminación de cualquier relleno en el parentView. El relleno parece causar un cambio en el tamaño de diseño

  • Android 2.3: Crecer / reducir el error de animación?
  • ImageView en forma circular a través de xml
  • ImageView scaleType = "fitXY" no funciona en el dispositivo pre-lollipop dentro de Cardview | Androide
  • Android Lollipop: ImageView ignorando el atributo fitsSystemWindows (barra de estado transparente)
  • Dibujar un rectángulo detrás de ImageView personalizado que no anima
  • Imageview Roundcorner no funciona para las cuatro esquinas
  • Galería y pantalla completa ImageView, problema en ponerlos juntos
  • ¿Cómo obtener las mismas coordenadas de imagen para todas las resoluciones en android?
  • Cómo obtener el tamaño del mapa de bits después de mostrarlo en ImageView
  • Imagen circular seleccionable como Google+
  • Esquinas redondeadas para una vista de imagen en android
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.