Cómo obtener el ancho y la altura de un android.widget.ImageView?
╔══════════════════════════════════════════════╗ ^ ║ ImageView ╔══════════════╗ ║ | ║ ║ ║ ║ | ║ ║ Actual image ║ ║ | ║ ║ ║ ║ |60px height of ImageView ║ ║ ║ ║ | ║ ║ ║ ║ | ║ ╚══════════════╝ ║ | ╚══════════════════════════════════════════════╝ <------------------------------------------------> 90px width of ImageView
Tengo una visión de la imagen con una cierta altura y una anchura por defecto, las imágenes se almacenan en db y quiero escalar la imagen según el ancho de la altura de Imageview. Como no quiero dar valores predeterminados porque cuando alguna vez lo cambio es altura y ancho también tengo que cambiarlo en código.
Estoy intentando conseguir la altura y la anchura de ImageView pero 0 se me vuelve en ambos casos.
- ¿Cuál es la diferencia entre ImageView.setBackgroundResource y ImageView.setImageResource?
- ¿Es posible mostrar la imagen con el método loadDataWithBaseURL () en android?
- Android - Dibujo de una imagen de los activos, algo raro está sucediendo
- agregar imagen a la vista de la superficie en android
- Android: reduce el tamaño del archivo de imagen
int height = ((ImageView) v.findViewById(R.id.img_ItemView)).getHeight();
Esto me devuelve 0 incluso tiene altura por defecto y el ancho
- Diferencia entre los formatos de imagen RGB888 y ARGB8888
- Imagebutton me da error: Falta el atributo contentDescription en la imagen
- Phonegap resolveLocalFileSystemURL no funciona para el contenido de uri en android
- Ajustar la imagen en ImageView, mantener la relación de aspecto y luego cambiar el tamaño de ImageView a las dimensiones de la imagen?
- Android: obtener un recurso de imagen en Uri: IllegalArgumentException
- ¿Cómo combinar múltiples imágenes en una sola imagen en android?
- Convertir texto de cadena en mapa de bits
- ¿Cómo puedo estirar la imagen en imagebutton a todo el área del imagebutton?
Mi respuesta a esta pregunta podría ayudarte:
int finalHeight, finalWidth; final ImageView iv = (ImageView)findViewById(R.id.scaled_image); final TextView tv = (TextView)findViewById(R.id.size_label); ViewTreeObserver vto = iv.getViewTreeObserver(); vto.addOnPreDrawListener(new ViewTreeObserver.OnPreDrawListener() { public boolean onPreDraw() { iv.getViewTreeObserver().removeOnPreDrawListener(this); finalHeight = iv.getMeasuredHeight(); finalWidth = iv.getMeasuredWidth(); tv.setText("Height: " + finalHeight + " Width: " + finalWidth); return true; } });
A continuación, puede agregar el trabajo de escala de imagen desde el método onPreDraw ().
Acabo de configurar esta propiedad y ahora Android OS se ocupa de todo.
Android: adjustViewBounds = "true"
Utilícelo en el layout.xml en el que ha plantado ImageView: D
Podría conseguir el ancho y la altura de la imagen por su drawable;
int width = imgView.getDrawable().getIntrinsicWidth(); int height = imgView.getDrawable().getIntrinsicHeight();
La razón por la cual las dimensiones de ImageView son 0 es que cuando las está consultando, la vista todavía no ha realizado los pasos de diseño y medida. Sólo le dijiste a la vista cómo se "comportaría" en el diseño, pero todavía no calculó dónde colocar cada vista.
¿Cómo se decide el tamaño a dar a la vista de la imagen? ¿No puedes simplemente usar una de las opciones de escalado implementadas nativamente?
Publicar en el hilo de la interfaz de usuario funciona para mí.
final ImageView iv = (ImageView)findViewById(R.id.scaled_image); iv.post(new Runnable() { @Override public void run() { int width = iv.getMeasuredWidth(); int height = iv.getMeasuredHeight(); } });
Creo que puede dejar que el sistema operativo Android cuide de esto para usted. Establezca el tipo de escala en el ImageView a fitXY
y la imagen que muestre será dimensionada para ajustarse al tamaño actual de la vista.
<ImageView android:layout_width="90px" android:layout_height="60px" android:scaleType="fitXY" />
Su archivo xml:
<ImageView android:id="@+id/imageView" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/image" android:scaleType="fitXY" android:adjustViewBounds="true"/>
Su archivo java:
ImageView imageView = (ImageView)findViewById(R.id.imageView); int width = imageView.getDrawable().getIntrinsicWidth(); int height = imageView.getDrawable().getIntrinsicHeight();
Si ha creado varias imágenes de forma dinámica, pruebe esta:
// inicializa tu matriz de imágenes
private ImageView myImages[] = new ImageView[your_array_length];
// crear programaticamente y añadir a la vista principal
for (int i = 0; i < your_array_length; i++) { myImages[i] = new ImageView(this); myImages[i].setId(i + 1); myImages[i].setBackgroundResource(your_array[i]); RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams( frontWidth[i], frontHeight[i]); ((MarginLayoutParams) params).setMargins(frontX_axis[i], frontY_axis[i], 0, 0); myImages[i].setAdjustViewBounds(true); myImages[i].setLayoutParams(params); if (getIntent() != null && i != your_array,length) { final int j = i; myImages[j].getViewTreeObserver().addOnPreDrawListener(new ViewTreeObserver.OnPreDrawListener() { public boolean onPreDraw() { myImages[j].getViewTreeObserver().removeOnPreDrawListener(this); finalHeight = myImages[j].getMeasuredHeight(); finalWidth = myImages[j].getMeasuredWidth(); your_textview.setText("Height: " + finalHeight + " Width: " + finalWidth); return true; } }); } your_parent_layout.addView(myImages[i], params); }
// Eso es. Codificación feliz.
La forma más sencilla es obtener el ancho y la altura de un ImageView en onWindowFocusChanged método de la actividad
@Override public void onWindowFocusChanged(boolean hasFocus) { super.onWindowFocusChanged(hasFocus); height = mImageView.getHeight(); width = mImageView.getWidth(); }
Mi amigo por este u no están consiguiendo altura de la imagen almacenada en db.but usted está consiguiendo height.for de la visión que consigue la altura de la imagen u tiene que crear el mapa de bits de db, s image.and que u puede buscar altura y anchura de imageview
- "No se puede resolver el símbolo R" en Android Studio
- La aplicación puede estar haciendo demasiado trabajo en su hilo principal