2012-02-01 74 views
0

我有一個位圖,我需要在我的屏幕上用適合的水平顯示我當前手機(320像素)的屏幕上的所有diwth。如何顯示適合屏幕寬度的位圖?

我正在嘗試,但出現問題。

問題是位圖沒有得到我想要的寬度。它在左側和右側有兩個空的空間。這是因爲它適合屏幕的高度,但我不希望那樣,我想強制位圖具有我想要的寬度。如果位圖的一部分高度不在屏幕上,則無關緊要。

我需要強制寬度,當我將圖像添加到佈局,我的意思是圖像必須保持長寬比,但圖像必須高於屏幕的高度,圖像必須是如果圖像的高度高於屏幕的高度,則顯示不完整。現在不會發生這種情況,因爲佈局迫使寬度尊重圖像並在屏幕高度顯示圖像的所有高度,那麼我認爲問題在於佈局規則

即時創建位圖與:

View view; 
Bitmap aux = Util.loadImage(filename); //image loaded but with his original width 
Bitmap image = Util.scaleBitmap(aux, 320); //scaling to 320 
((ImageView)view).setImageBitmap(resource.image); 

RelativeLayout.LayoutParams rlp = new RelativeLayout.LayoutParams(320 , h); 
rlp.addRule(RelativeLayout.CENTER_HORIZONTAL); 
rlp.addRule(RelativeLayout.ALIGN_PARENT_TOP); 

layout.addView(view , rlp); 

代碼有什麼問題?

回答

0

嘗試使用android:scaleType =「fitXY」這個標籤。

+0

如何以編程方式使用java? – NullPointerException 2012-02-01 13:08:54

+0

它的工作或多或少,但strething的高度,我不想strectch高度,我只是想伸展寬度,是不可能的? – NullPointerException 2012-02-01 15:07:06

0

除非您使用DIP(與設備無關的像素),否則絕對不應該對像素數進行硬編碼。它可能在320寬度的手機上工作,但另一部手機呢?或平板電腦?

您應該使用ImageView.scaleType。請參閱here

CENTER_INSIDE可能是您需要的。

+0

如何用java編程實現它? – NullPointerException 2012-02-01 13:09:29

3

在XML文件中,如圖像視圖必須具有等於fill_parent的佈局寬度,並使用scaleType屬性。

android:layout_width="fill_parent" 
android:scaleType="fitXY" 

在Java文件同樣的事情也會使用下面的代碼來實現。我只談論scaleType而不是layout_width,layout_width也必須是fill_parent才能使用java代碼。

setScaleType(ImageView.ScaleType.FIT_XY); 

我希望你明白這一點。

+0

tryed它,沒有工作 – NullPointerException 2012-02-01 13:28:34

+0

@ AndroidUser99檢查我更新的答案。 – 2012-02-01 14:07:41

+0

它或多或少的作用,但它是streigh的高度,我不想strectch的高度,我只想拉伸寬度,是不可能的? – NullPointerException 2012-02-01 14:53:24

0

使用機器人:在ImageView的XML文件的背景,要設置爲背景圖像將伸展整個屏幕寬度,如果的android:layout_width =「FILL_PARENT」爲ImageView的。這不是圖像源,是背景屬性。

在Java文件中,同樣的事情將通過下面的代碼來實現。

setBackgroundDrawable(getResources().getDrawable(R.drawable.yourimagefile)); 

如果你喜歡它,暫時可以使用我的建議。再次我是個講我建議使用背景屬性不SRCImageView的

的屬性,我也在努力進行圖像視圖的源不是背景相同的效果。我希望它可以幫助你。