16

我有一个 ImageView,其高度和宽度设置为“fill_parent”,其相对布局设置了相同的值。Set Image scaleType="fitXY"

这里的 XML 布局:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent">


<ImageView
    android:id="@+id/imageView1"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:scaleType="fitXY"
    android:src="@drawable/background_image" />


</RelativeLayout>

适合宽度和高度,但图像被拉伸。

4

4 回答 4

21

fitXY就是应该做的。centerInside如果您不想裁剪图像,或者centerCrop想要填充所有空间(并裁剪图像) ,您可以尝试。

是一个很好的示例列表,可以更好地理解所有scaleTypes.

于 2013-10-18T13:37:09.713 回答
15

这两个属性为我解决了问题:

android:scaleType="fitXY"
android:adjustViewBounds="true"
于 2016-05-05T12:07:48.417 回答
0
package utils;

import android.content.Context;
import android.graphics.drawable.Drawable;
import android.util.AttributeSet;
import android.widget.ImageView;

/**
 * Created by Navneet Boghani on 7/7/16.
 */
public class ProportionalImageView extends ImageView {

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

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

    public ProportionalImageView(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
    }

    @Override
    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
        Drawable d = getDrawable();
        if (d != null) {
         //   int w = MeasureSpec.getSize(widthMeasureSpec);
          //  int h = w * d.getIntrinsicHeight() / d.getIntrinsicWidth();
            int h = MeasureSpec.getSize(heightMeasureSpec);
            int w = h * d.getIntrinsicWidth() / d.getIntrinsicHeight();
            setMeasuredDimension(w, h);
        }
        else super.onMeasure(widthMeasureSpec, heightMeasureSpec);
    }
}
于 2016-07-07T13:09:32.670 回答
0

这就是 fitXY 将要做的。它不会尊重图像的纵横比并将图像填充到您的 imageview 而不保持图像的原始纵横比。如果您想将图像的大小与您的视图相匹配,您可以自己缩放图像,或者您可以查看 glide 库为您执行此操作。当涉及到 android 中的图像时,Glide 是一个非常有用的库

于 2021-02-11T10:40:44.847 回答