我使用ImageView来显示图片,我希望图片显示在一个矩形中,这比它的实际尺寸小,但我希望图片可以在rect中完全显示。我设置了其他scaleType,例如'centerInside',然后图片无法在rect中显示,但'center'可以。我想知道如何编码可以在矩形中显示比自身更小的图片。
<ImageView
android:id="@+id/imageView2"
android:layout_width="20.0dip"
android:layout_height="20.0dip"
android:adjustViewBounds="true"
android:contentDescription="@string/boy"
android:paddingLeft="20.0dip"
android:paddingTop="40.0dip"
android:scaleType="center"
android:src="@drawable/boy" />
答案 0 :(得分:0)
两个选项.-
drawable
与ImageView
具有相同的宽高比,请将scaleType
设为fitXY
centerCrop
万一你不知道,更多关于scaleTypes
here。
答案 1 :(得分:0)
根据ImageView scale type documentation,centerInside
还包含大小的填充。
均匀缩放图像(保持图像的纵横比),使图像的尺寸(宽度和高度)等于或小于视图的相应尺寸(减去填充)。
由于padding
与ImageView
的尺寸相同/更大,因此无法显示图像(实际上,它已超出界限)。
使用android:scaleType="centerInside"
并考虑使用android:layout_margin
代替android:padding
。
答案 2 :(得分:0)
你应该使用android:scaleType="centerInside"
public static final ImageView.ScaleType CENTER_INSIDE
均匀缩放图像(保持图像的纵横比),使图像的尺寸(宽度和高度)等于或小于视图的相应尺寸(减去填充)。然后图像在视图中居中。从XML,使用以下语法:android:scaleType =“centerInside”。
有关详细信息,请参阅here
答案 3 :(得分:0)
我没有看到你在使用带有ImageView的scaleType时遇到问题。将ImageView放入(例如)FrameLayout并检查我的示例。
第一个例子:
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<ImageView android:layout_width="200dp"
android:layout_height="200dp"
android:layout_gravity="center"
android:src="@drawable/something"
android:scaleType="centerInside">
</ImageView>
</FrameLayout>
秒(全屏缩放):
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<ImageView android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_gravity="center"
android:src="@drawable/something"
android:scaleType="centerInside">
</ImageView>
</FrameLayout>
答案 4 :(得分:0)
尝试圆角@ http://www.curious-creature.org/2012/12/11/android-recipe-1-image-with-rounded-corners/
的图像找到以下@ How to make an ImageView with rounded corners?
public class ImageHelper {
public static Bitmap getRoundedCornerBitmap(Bitmap bitmap, int pixels) {
Bitmap output = Bitmap.createBitmap(bitmap.getWidth(), bitmap
.getHeight(), Config.ARGB_8888);
Canvas canvas = new Canvas(output);
final int color = 0xff424242;
final Paint paint = new Paint();
final Rect rect = new Rect(0, 0, bitmap.getWidth(), bitmap.getHeight());
final RectF rectF = new RectF(rect);
final float roundPx = pixels;
paint.setAntiAlias(true);
canvas.drawARGB(0, 0, 0, 0);
paint.setColor(color);
canvas.drawRoundRect(rectF, roundPx, roundPx, paint);
paint.setXfermode(new PorterDuffXfermode(Mode.SRC_IN));
canvas.drawBitmap(bitmap, rect, rect, paint);
return output;
}
}
您还可以查看RoundCornerImageView
的演示实施情况答案 5 :(得分:0)
使用scaleType =&#34; fitXY&#34;而不是中心