Android:图像按钮的拉伸/缩放存在问题

4

我一直在苦恼一个看起来很简单的问题。我正在使用一个类来设置图像按钮上的图片。我希望图片适应屏幕的大小限制,但是不要拉伸。也就是说,如果它太宽而无法适应屏幕,我希望高度被缩放以容纳它,这样它就不会被拉伸了。而如果高度过高,我希望图像高度减小,同时缩小宽度。

我看到有这个问题不止一次地被问到,我尝试了所有建议,但对我来说没有任何影响。我认为这可能与使用ImageButton而不是ImageView有关?

以下是一些相关的代码片段(破碎得很厉害)...

在我的类中:

          ImageView img = (ImageButton) dialog.findViewById(R.id.fullsizeimage);
          img.setScaleType(ImageView.ScaleType.CENTER_INSIDE);  //Changing ScaleType here has no effect
          img.setImageBitmap(useThisBitmap);

以下是XML布局内容...

 <?xml version="1.0" encoding="utf-8"?>
   <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >

<ImageButton
    android:id="@+id/fullsizeimage"
    android:background="@null"
    android:layout_width="wrap_content" 
    android:layout_height="fill_parent"
    android:adjustViewBounds="true"
    />

 </RelativeLayout>

XML文件中的某些内容可能是错误的。但我已经改了很多次,却没有任何效果。

非常感谢任何建议。


已在此处解决:https://dev59.com/znA75IYBdhLWcg3wZ4Fr#19538789 - HimalayanCoder
1个回答

3
我认为ImageButton会始终拉伸背景图像以填充整个背景。 ImageView可以轻松地单独设置可点击性,您尝试过吗?
更复杂的选项是使用自定义视图,可以以任何您喜欢的方式在画布上绘制图像,并具有onTouch监听器。

那样做很有道理。我看到ScaleType不适用于ImageButton(或者SDK认为如此)。所以我把它改成了ImageView。这看起来好多了。但是...设置ScaleType没有任何效果。当我将其输入到XML文件中时(即android:scaleType="centerCrop"),也没有任何效果。这让我疯狂。 :-) - RayHaque
原来我是个傻瓜!在我的代码中,我之前做了这个: Bitmap useThisBitmap = Bitmap.createScaledBitmap(bitmap, parent.getWidth(), parent.getHeight(), true); 然后在下面:Bitmap bitmap = BitmapFactory.decodeStream(bis);。第一段代码是一个不起作用的实验,但如果你看一下上面的代码,你会发现我仍然在引用它。我只改变了这一行,现在我的ScaleType正在工作…… img.setImageBitmap(bitmap); // 不是useThisBitmap!谢谢Lumis的帮助。 - RayHaque

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接