How do I prevent scaling in Android Imageview?

2019-02-04 15:51发布

问题:

I have an image that is 480 pixels by 40 pixels. I would like to show this image in an ImageView without having it scale to fit.

Ex: If my screen is only 320pixels wide I would like only 320pixels of the image to show on the screen, not have it cram itself into the ImageView (even if it means that the rest of the image gets cut off).

Is there a way to prevent it from scaling to fit?

EDIT: Also, I would like the left side of the image to line up with the left side of the device's screen.

Thanks

回答1:

Use ScaleType.CENTER, like this in XML:

android:scaleType="center"

This will "center the image in the view, but perform no scaling"

Read more here: http://developer.android.com/reference/android/widget/ImageView.ScaleType.html

(This is by the way the first hit on googling "imageview scale")



回答2:

Use the MATRIX scaletype to set it for no scaling and no centering

It will use the identity matrix unless you set it using setImageMatrix(matrix);

android:scaleType="matrix"

Or in Java:

view.setScaleType(ImageView.ScaleType.MATRIX);


回答3:

Try this one:

                    android:adjustViewBounds="true"
                    android:scaleType="centerCrop"


回答4:

I had a similar issue where I had a fixed size graphic that I wanted to scale to the screen but stay in proportion it was 480 x 200.

I used Fill_parent on the height so it would scale and wrap_content on the width. As well as Align Parent Left and Align Parent Top.

In your case you could just use wrap_content on both as well as Align Parent Left. Then I tweeked the width using Right Margin 180dp on normal screens to be sure it maintained the width.

<ImageView
    android:id="@+id/imageLayer"
    android:layout_width="wrap_content"
    android:layout_height="fill_parent"
    android:layout_alignParentLeft="true"
    android:layout_alignParentTop="true"
    android:layout_marginRight="180dp"
    tools:ignore="ContentDescription" />


回答5:

If

android:scaleType="center"

doesn't work, check how do you set your image. You have to use android:src, not android:backgorund

so

 android:scaleType="center"
 android:src="@drawable/yourDrawable"