Pregunta Establecer el ancho y alto de ImageView mediante programación


¿Cómo puedo configurar un ImageViewde ancho y alto de forma programática?


538
2018-06-29 21:36


origen


Respuestas:


Puede ser demasiado tarde, pero por el bien de otros que tienen el mismo problema, establecer la altura de ImageView:

image_view.getLayoutParams().height = 20;

Espero que esto ayude.

Importante. Si está configurando la altura después de que el diseño ya se haya "trazado", asegúrese de llamar también a:

image_view.requestLayout()

911
2018-03-10 09:45



Si su vista de imagen es dinámica, la respuesta que contiene getLayout fallará con null-exception.

En ese caso, la forma correcta es:

LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(100, 100);
iv.setLayoutParams(layoutParams);

195
2018-03-26 17:21



Esta forma simple de hacer su 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 pantalla en alto y ancho, utilice 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 usar completo para ti.


41
2017-12-17 13:46



He jugado este con pixel y dp.

private int dimensionInPixel = 200;

Cómo establecer por píxel:

view.getLayoutParams().height = dimensionInPixel;
view.getLayoutParams().width = dimensionInPixel;
view.requestLayout();

Cómo establecer 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.


25
2018-05-24 09:41



Si necesita establecer su ancho o altura para match_parent (tan grande como su padre) o wrap_content (lo suficientemente grande como para adaptarse a su propio contenido interno), luego 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 puedes configurarlos como en Hakem Zaied's responder:

imageView.getLayoutParams().width = ViewGroup.LayoutParams.MATCH_PARENT;
//...

10
2017-12-25 00:40



La mejor y más fácil manera de configurar un botón de forma dinámica 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 siendo la altura en dp y 42 siendo 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));

8
2017-12-06 09:22



Puede establecer el valor para todos los casos.

demoImage.getLayoutParams().height = 150;

demoImage.getLayoutParams().width = 150;

demoImage.setScaleType(ImageView.ScaleType.FIT_XY);

8
2017-07-27 14:03



Simplemente cree un objeto LayoutParams y asígnelo a su imageView

LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(150, 150);
imageView.setLayoutParams(params);

5
2018-01-05 06:04