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.
- Hacer una vista de imagen extensible en gridview
- Cómo rellenar la imagen dentro de ImageView por la costumbre de la izquierda y la coordenada superior | Androide
- Android, cambiar el tamaño de la imagen en ImageView
- Diapositiva de Android para responder como animación de ImageView
- Cargar imagen en ImageView de la URL almacenada en JSONString en Android
- Animación panorámica de Android ImageView con scaleType centerCrop
- Mapa de bits en ImageView con esquinas redondeadas
- Quiero transferir la imagen de una actividad a otra
- Escucha de zoom para PhotoView
- Picasso "Cambiar tamaño y centerCrop" o ImageView "centerCrop"?
- Inflated ImageView para poner en GalleryView no es el tamaño correcto
- ¿Cómo puedo actualizar la imagen de fresco SimpleDraweeView, si se estableció una vez por setImageURI
- Android, ImageView sobre ImageView
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
- Implementación de pestañas de barras de acción con fragmentos
- Añadir carácter automáticamente en EditText después de 6 letras