2011-03-13 167 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