stanley santoso
stanley santoso

Reputation: 343

ImageView setMaxHeight or getWidth doesn't work

I have this code:

holder.ImageMain.setMaxHeight(holder.ImageMain.getWidth());

My intention is to have a square imageview if the image is big and horizontal. the code will set a height that is the same as the width.

But for some reason it's not working. The imageView has been long and horizontal.

Do you have any idea what's wrong with it?

Upvotes: 0

Views: 394

Answers (1)

Aracem
Aracem

Reputation: 7207

You can try to use android:adjustViewBounds= "true"

or to a more controled case, use instead a custom ImageView that in the onMeasure method adjust it size like you want. For example here are an example to create a 16/9 ImageView

public class SixteenNineImageView extends ImageView {

    public SixteenNineImageView(Context context) {
        super(context);
    }

    public SixteenNineImageView(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    public SixteenNineImageView(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
    }

    @TargetApi(Build.VERSION_CODES.LOLLIPOP)
    public SixteenNineImageView(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
        super(context, attrs, defStyleAttr, defStyleRes);
    }

    @Override
    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
        super.onMeasure(widthMeasureSpec, heightMeasureSpec);

        final int width = getMeasuredWidth();
        final int height = (width * 9) / 16;
        setMeasuredDimension(width, height);
    }
}

Upvotes: 1

Related Questions