Karthik
Karthik

Reputation: 5033

How can we set height and width dp for imageview in android?

I would like to set height and width in dp for ImageView in android pragmatically.

How can I achieve this?

Upvotes: 31

Views: 57648

Answers (7)

Tejas Gawali
Tejas Gawali

Reputation: 11

 final float scale = getContext().getResources().getDisplayMetrics().density;
int height_ = (int) (250 * scale + 0.5f);
int width_ = (int) (250 * scale + 0.5f);

250 is in dp

ViewGroup.LayoutParams params = ImageView.getLayoutParams();
params.height = height_;
params.width = width_;

ImageView.setLayoutParams(params);

Upvotes: 1

Andreas Constantinou
Andreas Constantinou

Reputation: 104

  1. at first choose a desirable dip and assign it to a var.

int dipAmount=350;

  1. Then read the height of your ImageView.

float scale = imageview.Resource.DisplayMetrics.Density;

  1. Convert from px to dip.

int converter =(int) (350 * scale + 0.5f);

  1. Set the height to imageview.

imageView.LayoutParameters.Height=converter;

Upvotes: 1

velval
velval

Reputation: 3312

This may be simpler and should do the trick:

ImageView im = (ImageView)findViewById(R.id.image1);
LayoutParams params = im.getLayoutParams();
params.height = getActivity().getResources().getDimensionPixelSize(R.dimen.item_height);
params.width = getActivity().getResources().getDimensionPixelSize(R.dimen.item_width);

And in your dimens.xml

<dimen name="item_height">80dp</dimen> 
<dimen name="item_width">80dp</dimen> 

Upvotes: 6

sham
sham

Reputation: 1356

Use display metrics to get the sale factor and then just some simple maths - example, if I want 200x150dp:

final float scale = getResources().getDisplayMetrics().density;
int dpWidthInPx  = (int) (200 * scale);
int dpHeightInPx = (int) (150 * scale);

Then set the image view size:

LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(dpWidthInPx, dpHeightInPx);
imageView.setLayoutParams(layoutParams);

Upvotes: 30

Andros
Andros

Reputation: 4069

Set width & height with dp :

imageview.getLayoutParams().height = (int) getResources().getDimension(R.dimen.imageview_height);
imageview.getLayoutParams().width = (int) getResources().getDimension(R.dimen.imageview_width);

In your dimens.xml provide values for the keys :

<dimen name="imageview_width">50dp</dimen> 
<dimen name="imageview_height">50dp</dimen> 

Upvotes: 73

lalith
lalith

Reputation: 55

This may help you...

ImageView im = (ImageView)findViewById(R.id.image1);
LayoutParams params = im.getLayoutParams();
params.height = 100;
params.width = 100;

Upvotes: 1

Satyaki Mukherjee
Satyaki Mukherjee

Reputation: 2879

Try this:

image_view.getLayoutParams().height = 20;
image_view.getLayoutParams().width= 20;

Give me your feedback if it's acceptable. It's work for me.

Upvotes: -2

Related Questions