¿Cómo puedo configurar ImageView
el ancho y el alto de una mediante programación?
¿Cómo puedo configurar ImageView
el ancho y el alto de una mediante programación?
Respuestas:
Puede ser demasiado tarde, pero por el bien de otros que tienen el mismo problema, establecer la altura de ImageView:
imageView.getLayoutParams().height = 20;
Espero que esto ayude.
Importante. Si está configurando la altura después de que el diseño ya se haya 'diseñado', asegúrese de llamar también a:
imageView.requestLayout();
image_view.getLayoutParams().height = RelativeLayout.LayoutParams.WRAP_CONTENT
. Si la vista principal se LinearLayout
reemplaza RelativeLayout
con ella
Si su vista de imagen es dinámica, la respuesta que contiene getLayout fallará con una excepción nula.
En ese caso, la forma correcta es:
LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(100, 100);
iv.setLayoutParams(layoutParams);
ImageView
desaparece. El truco es hacer que la parte del diseño (es decir, <this_part_here>.LayoutParams
) sea la misma que la del padre ImageView
. Entonces, por ejemplo, si ha colocado su ImageView
dentro de TableRow
dentro de a TableLayout
, debe tenerlo como TableRow.LayoutParams
.
Esta forma simple de hacer tu tarea:
setContentView(R.id.main);
ImageView iv = (ImageView) findViewById(R.id.left);
int width = 60;
int height = 60;
LinearLayout.LayoutParams parms = new LinearLayout.LayoutParams(width,height);
iv.setLayoutParams(parms);
y de otra manera, si desea dar el tamaño de la pantalla en altura y ancho, use el siguiente código:
setContentView(R.id.main);
Display display = getWindowManager().getDefaultDisplay();
ImageView iv = (LinearLayout) findViewById(R.id.left);
int width = display.getWidth(); // ((display.getWidth()*20)/100)
int height = display.getHeight();// ((display.getHeight()*30)/100)
LinearLayout.LayoutParams parms = new LinearLayout.LayoutParams(width,height);
iv.setLayoutParams(parms);
Espero usarlo por completo.
int
variables si no se reutilizarán en otro lugar? Parece innecesario pero no sé mucho al respecto tbh.
He jugado este con pixel
y dp
.
private int dimensionInPixel = 200;
Cómo configurar por píxel :
view.getLayoutParams().height = dimensionInPixel;
view.getLayoutParams().width = dimensionInPixel;
view.requestLayout();
Cómo configurar por dp :
int dimensionInDp = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, dimensionInPixel, getResources().getDisplayMetrics());
view.getLayoutParams().height = dimensionInDp;
view.getLayoutParams().width = dimensionInDp;
view.requestLayout();
Espero que esto te ayude.
Si necesita establecer su ancho o alto en match_parent
(tan grande como su padre) o wrap_content
(lo suficientemente grande como para ajustarse a su propio contenido interno), entonces ViewGroup.LayoutParams
tiene estas dos constantes:
imageView.setLayoutParams(
new ViewGroup.LayoutParams(
// or ViewGroup.LayoutParams.WRAP_CONTENT
ViewGroup.LayoutParams.MATCH_PARENT,
// or ViewGroup.LayoutParams.WRAP_CONTENT,
ViewGroup.LayoutParams.MATCH_PARENT ) );
O puede configurarlos como en la respuesta de Hakem Zaied :
imageView.getLayoutParams().width = ViewGroup.LayoutParams.MATCH_PARENT;
//...
Puede establecer el valor para todos los casos.
demoImage.getLayoutParams().height = 150;
demoImage.getLayoutParams().width = 150;
demoImage.setScaleType(ImageView.ScaleType.FIT_XY);
La mejor y más fácil forma de configurar un botón dinámicamente es
Button index=new Button(this);
int height = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 45, getResources().getDisplayMetrics());
int width = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 42, getResources().getDisplayMetrics());
La altura y el ancho anteriores están en píxeles px . 45 es la altura en dp y 42 es el ancho en dp .
index.setLayoutParams(new <Parent>.LayoutParams(width, height));
Entonces, por ejemplo, si ha colocado su botón dentro de un TableRow dentro de un TableLayout, debe tenerlo como TableRow.LayoutParams
index.setLayoutParams(new TableRow.LayoutParams(width, height));
Simplemente cree un objeto LayoutParams y asígnelo a su imageView
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(150, 150);
imageView.setLayoutParams(params);
image_view.getLayoutParams().height
Devuelve el valor de altura en píxeles. Primero debe obtener las dimensiones de la pantalla para establecer los valores correctamente.
Display display = context.getWindowManager().getDefaultDisplay();
DisplayMetrics outMetrics = new DisplayMetrics();
display.getMetrics(outMetrics);
int screen_height = outMetrics.heightPixels;
int screen_width = outMetrics.widthPixels;
Después de obtener las dimensiones de la pantalla, puede establecer el ancho y la altura de la vista de imagen utilizando los márgenes adecuados.
view.getLayoutParams().height = screen_height - 140;
view.getLayoutParams().width = screen_width - 130 ;
Para configurar el ImageView y la altura de forma programática, puede hacer
//Makesure you calculate the density pixel and multiply it with the size of width/height
float dpCalculation = getResources().getDisplayMetrics().density;
your_imageview.getLayoutParams().width = (int) (150 * dpCalculation);
//Set ScaleType according to your choice...
your_imageview.setScaleType(ImageView.ScaleType.CENTER_CROP);
Kotlin
val density = Resources.getSystem().displayMetrics.density
view.layoutParams.height = 20 * density.toInt()
En el escenario donde el tamaño del widget debe establecerse mediante programación, asegúrese de las siguientes reglas.
LayoutParam
el diseño en el que está agregando esa vista . En mi caso estoy agregando a TableRow
lo que tuve que hacerTableRow.LayoutParams
final float scale = getResources().getDisplayMetrics().density;
int dpWidthInPx = (int) (17 * scale);
int dpHeightInPx = (int) (17 * scale);
TableRow.LayoutParams deletelayoutParams = new TableRow.LayoutParams(dpWidthInPx, dpHeightInPx);
button.setLayoutParams(deletelayoutParams);
tableRow.addView(button, 1);
Si solo desea ajustar la imagen en la vista de imagen, puede usar "envolver contenido" en la propiedad de alto y ancho con tipo de escala, pero si desea configurarlo manualmente, debe usar LayoutParams.
Layoutparams es eficiente para configurar la altura y el ancho del diseño mediante programación.
int newHeight = 150;
int newWidth = 150;
holder.iv_arrow.requestLayout();
holder.iv_arrow.getLayoutParams().height = newHeight;
holder.iv_arrow.getLayoutParams().width = newWidth;
holder.iv_arrow.setScaleType(ImageView.ScaleType.FIT_XY);
holder.iv_arrow.setImageResource(R.drawable.video_menu);