2012-02-01 38 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的

的属性,我也在努力进行图像视图的源不是背景相同的效果。我希望它可以帮助你。