Pratik Butani
Pratik Butani

Reputation: 62419

Android - Picasso removes margin after loading Image

I am adding ImageView in LinearLayout programmatically:

for (int i = 0; i < length; i++) {
    final ImageView imageView = new ImageView(getActivity());
    imageView.setScaleType(ImageView.ScaleType.CENTER);

    LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(screenWidth / 2, screenHeight / 3);
    params.setMargins(10, 10, 10, 10); //SETTING MARGIN HERE
    imageView.setLayoutParams(params);

    mBrandLinearLayout.addView(imageView); // adding in LinearLayout

    Picasso.with(mContext)
            .load(mBrandArrayList.get(i).getBrandLogo())
            .resize(screenWidth / 2, screenHeight / 2)
            .placeholder(R.drawable.ic_photo_24dp)
            .error(R.drawable.ic_photo_24dp)
            .into(imageView);
}

Without loading images with Picasso it works fine with sample of drawable images but after adding Picasso code it removes Top and Bottom margins.

Note: I have tried to load image first and set image after loading image but it is also not working.

Is there any way to set Margins with Picasso?

Upvotes: 0

Views: 1279

Answers (1)

Pratik Butani
Pratik Butani

Reputation: 62419

Solved with adding -10 in

new LinearLayout.LayoutParams(screenWidth / 2, screenHeight / 3 - 10);

and

.resize(screenWidth / 2, screenHeight / 3 - 10)

Edited Code:

for (int i = 0; i < length; i++) {
    final ImageView imageView = new ImageView(getActivity());
    imageView.setScaleType(ImageView.ScaleType.CENTER);
    LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(screenWidth / 2, screenHeight / 3 - 10); //ADDED -10
    params.setMargins(5, 5, 5, 5);
    imageView.setLayoutParams(params);

    mBrandLinearLayout.addView(imageView);

    Picasso.with(mContext)
            .load(mBrandArrayList.get(i).getBrandLogo())
            .resize(screenWidth / 2, screenHeight / 3 - 10) //ADDED -10
            .placeholder(R.drawable.ic_photo_24dp)
            .error(R.drawable.ic_photo_24dp)
            .into(imageView);
}

Upvotes: 1

Related Questions