LY7WAK
LY7WAK

Reputation: 1

Set margins and other layout properties of ImageView programmatically

I'm trying to add a few images to a LinearLayout programmatically.

the xml of the image looks like this:

<ImageView
    android:id="@+id/iv_card27"
    android:layout_width="50dp"
    android:layout_height="match_parent"
    android:layout_marginLeft="5dp"
    android:layout_marginRight="5dp"
    android:scaleType="centerInside"
    app:srcCompat="@drawable/back" />

and this is my the java code I tried already:

ImageView card = new ImageView(this);

card.getLayoutParams().width = 50;
card.getLayoutParams().height = ViewGroup.LayoutParams.MATCH_PARENT;
card.setScaleType(ImageView.ScaleType.CENTER_INSIDE);
card.setImageResource(R.drawable.back);

bottomRow.addView(card);

However I have been struggling to add the Margins, Also Im worried about the width which I set to 50. But it should actually be 50dp. How can I accomplish this?

Upvotes: 0

Views: 2345

Answers (3)

mojtaba joshaghani
mojtaba joshaghani

Reputation: 71

for setting margin to your ImageView:

MarginLayoutParams marginParams = new MarginLayoutParams(image.getLayoutParams());
marginParams.setMargins(left_margin, top_margin, right_margin, bottom_margin);
RelativeLayout.LayoutParams layoutParams = new RelativeLayout.LayoutParams(marginParams);

card.setLayoutParams(layoutParams);

Upvotes: 0

Bholendra Singh
Bholendra Singh

Reputation: 1156

You can use ViewGroup.MarginLayoutParams , RelativeLayout.LayoutParams or LinearLayout.LayoutParams to set layout margin.

LayoutParams params = new LayoutParams(
            LayoutParams.WRAP_CONTENT,      
            LayoutParams.WRAP_CONTENT);
params.setMargins(left, top, right, bottom);
card.setLayoutParams(params);

https://developer.android.com/reference/android/view/ViewGroup.MarginLayoutParams

Upvotes: 1

Illya Bublyk
Illya Bublyk

Reputation: 722

You have to arrange margins using particular code:

LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
params.setMargins(xxx,xxx,xxx,xxx);
card.setLayoutParams(params);

Upvotes: 0

Related Questions