2011-03-13 126 views
4

我一直在为我认为简单的事情而苦苦挣扎。我正在使用一个类在图像按钮上设置图像。我想让图像适合屏幕的约束,但是没有拉伸。也就是说,如果它太宽而无法适应屏幕,我想要调整高度以适应屏幕,以便它不会得到拉伸。如果高度过高,我想要降低图像高度,从而缩小宽度。Android:在图像按钮上拉伸/缩放时遇到问题

我见过这个问题,问了几次,我已经尝试了每一点建议,但它对我来说绝对没有什么区别。我认为这可能与使用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文件中的某些垃圾可能是错误的。但是我改变了很多次,并且它有零效果。

任何和所有的建议是大大赞赏。

+0

解决它在这里http://stackoverflow.com/questions/3318629/imagebutton-in-android/19538789#19538789 – HimalayanCoder

回答

3

我认为ImageButton将始终拉伸背景图像以填充整个背景。 一个ImageView可以很容易地自行点击,你试过了吗?

一个更复杂的选择是使用自定义视图,它可以以任何方式在画布上绘制图像,并且可以拥有onTouch侦听器。

+0

这将是有道理的。我看到ScaleType不适用于ImageButton(或者认为SDK)。所以我将它改为ImageView。无论如何,这看起来好一点。但是...设置ScaleType不起作用。当我将它输入XML文件(即android:scaleType =“centerCrop”)时,它也没有任何影响。这让我疯狂。 :-) – RayHaque

+1

你试过android:scaleType =“fitCentre” – Lumis

+0

原来我是个傻瓜!在我的代码中,我是这样做的: 'Bitmap useThisBitmap = Bitmap.createScaledBitmap(bitmap,parent.getWidth(),parent.getHeight(),true);'然后在下面:'Bitmap bitmap = BitmapFactory.decodeStream(bis );'。第一段代码是一个无效的实验,但如果你看看我的代码,你会发现我仍然在引用它。我只是改变了这一行,现在我的ScaleType正在工作......'''img.setImageBitmap(bitmap); //不使用ThisBitmap!'感谢Lumis的帮助。 – RayHaque