Como posso definir ImageViewa largura e a altura de uma programação?
Como posso definir ImageViewa largura e a altura de uma programação?
Respostas:
Pode ser tarde demais, mas para o bem de outras pessoas com o mesmo problema, defina a altura do ImageView:
imageView.getLayoutParams().height = 20;
Espero que isto ajude.
Importante. Se você estiver definindo a altura após o layout já ter sido 'disposto', lembre-se de ligar para:
imageView.requestLayout();
image_view.getLayoutParams().height = RelativeLayout.LayoutParams.WRAP_CONTENT.. Se o pai vista é LinearLayoutsubstituir a RelativeLayoutcom ele
Se a visualização da imagem for dinâmica, a resposta que contém getLayout falhará com exceção nula.
Nesse caso, a maneira correta é:
LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(100, 100);
iv.setLayoutParams(layoutParams);
ImageViewdesaparece. O truque é fazer com que a parte do layout (ou seja <this_part_here>.LayoutParams) seja a mesma que o pai da pessoa ImageView. Então, por exemplo, se você colocou seu ImageViewdentro de um TableRowdentro de a TableLayout, deve tê-lo como TableRow.LayoutParams.
Esta maneira simples de executar sua tarefa:
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);
e de outra maneira, se você quiser especificar o tamanho da tela em altura e largura, use o código abaixo:
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 que use completo para você.
intvariáveis se não serão reutilizadas em outro lugar? Parece desnecessário, mas eu não sei muito sobre isso tbh.
Eu joguei este com pixele dp.
private int dimensionInPixel = 200;
Como definir por pixel :
view.getLayoutParams().height = dimensionInPixel;
view.getLayoutParams().width = dimensionInPixel;
view.requestLayout();
Como definir 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 isto te possa ajudar.
Se você precisar definir sua largura ou altura para match_parent(tão grande quanto seu pai) ou wrap_content(grande o suficiente para caber em seu próprio conteúdo interno), então existem ViewGroup.LayoutParamsduas constantes:
imageView.setLayoutParams(
new ViewGroup.LayoutParams(
// or ViewGroup.LayoutParams.WRAP_CONTENT
ViewGroup.LayoutParams.MATCH_PARENT,
// or ViewGroup.LayoutParams.WRAP_CONTENT,
ViewGroup.LayoutParams.MATCH_PARENT ) );
Ou você pode configurá-los como na resposta de Hakem Zaied :
imageView.getLayoutParams().width = ViewGroup.LayoutParams.MATCH_PARENT;
//...
Você pode definir o valor para todos os casos.
demoImage.getLayoutParams().height = 150;
demoImage.getLayoutParams().width = 150;
demoImage.setScaleType(ImageView.ScaleType.FIT_XY);
A melhor e mais fácil maneira de definir um botão dinamicamente é
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());
A altura e largura acima estão em pixels px . 45 sendo a altura em dp e 42 sendo a largura em dp .
index.setLayoutParams(new <Parent>.LayoutParams(width, height));
Portanto, por exemplo, se você colocou seu botão em um TableRow em um TableLayout, deve tê-lo como TableRow.LayoutParams
index.setLayoutParams(new TableRow.LayoutParams(width, height));
Basta criar um objeto LayoutParams e atribuí-lo ao seu imageView
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(150, 150);
imageView.setLayoutParams(params);
image_view.getLayoutParams().height
retorna o valor da altura em pixels. Você precisa obter as dimensões da tela primeiro para definir os valores corretamente.
Display display = context.getWindowManager().getDefaultDisplay();
DisplayMetrics outMetrics = new DisplayMetrics();
display.getMetrics(outMetrics);
int screen_height = outMetrics.heightPixels;
int screen_width = outMetrics.widthPixels;
Depois de obter as dimensões da tela, você pode definir a largura e a altura da visualização de imagem usando as margens adequadas.
view.getLayoutParams().height = screen_height - 140;
view.getLayoutParams().width = screen_width - 130 ;
Para definir o ImageView e Height programaticamente, você pode fazer
//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()
No cenário em que o tamanho do widget precisa ser definido programaticamente, verifique as regras abaixo.
LayoutParam para o Layout no qual você está adicionando essa exibição . No meu caso, eu estou adicionando, TableRowentão eu tive que fazerTableRow.LayoutParamsfinal 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);
Se você quiser apenas ajustar a imagem no modo de exibição de imagem, poderá usar o "quebra de conteúdo" na propriedade height e width com o tipo de escala, mas se desejar definir manualmente, precisará usar LayoutParams.
Os parâmetros de layout são eficientes para definir a altura e largura do layout programaticamente.
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);