如何在不拉伸的情况下将位图显示为视图背景 android

How to display a bitmap as background of view without stretching android

我想在不拉伸的情况下将位图设置为视图背景,并且我不想将视图宽度和高度更改为 wrap-content。我想将视图的宽度和高度保持为匹配父级。我已经设置了如下视图的背景,其中 mDrawingView 是扩展视图的自定义视图。

 Bitmap tempBitmap = BitmapFactory.decodeFile(copy.getAbsolutePath());
 mDrawingView.setBackground(new BitmapDrawable(getResources(), tempBitmap));

我的布局文件如下所示,

  <MyPackageName.DrawingView
            android:id="@+id/drawing_view"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:background="@color/white"/>

请注意我没有使用 imageview。

请给我一些建议?

如果您使用的是图像视图,那么您可以像下面那样做

 ImageView.ScaleType 

可以是 CenterCrop、fit 等你可以在这里阅读它是 android 原生支持 https://developer.android.com/reference/android/widget/ImageView.ScaleType.html

你可以做到

    imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
    imageView.setImageResource(R.drawable.res_id);

其中 res_id 是 drawable 文件夹中的资源 ID。

我更改了我的 DrawingView,它扩展了 Imageview 而不是 View,然后像下面这样设置位图

 Bitmap bitmap = BitmapFactory.decodeFile(copy.getAbsolutePath());
  mDrawingView.setImageBitmap(bitmap);

现在位图在 imageview 上显示时无需拉伸,效果完美。

感谢您宝贵的意见和回答。