我有一个ImageView,其高度和宽度设置为“fill_parent”,相对布局具有相同的值set.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>
适合宽度和高度,但图像会拉伸。
答案 0 :(得分:10)
这就是 fitXY
应该做的事情。如果您不想裁剪图片,可以尝试 centerInside
;如果要填充所有空间,可以尝试 centerCrop
(和剪裁你的形象)。
Here是一个很好的列表,其中有一些示例可以更好地理解所有scaleTypes
。
答案 1 :(得分:4)
这两个属性为我解决了问题:
android:scaleType="fitXY"
android:adjustViewBounds="true"
答案 2 :(得分: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);
}
}
答案 3 :(得分:0)
这就是 fitXY 会做的。它不会尊重图像的纵横比并将图像填充到您的图像视图中而不保持图像的原始纵横比。如果您想将图像的大小与您的视图相匹配,您可以自己缩放图像,或者您可以查看滑动库来为您做到这一点。 Glide 是一个非常有用的库,当涉及到 android 中的图像时