我有一个位图,我需要在我的屏幕上显示它,水平适合我当前手机屏幕的所有深度(320像素)。
我正在尝试但是出了点问题。
问题是位图没有达到我想要的宽度。左侧和右侧有两个空白区域。这是因为它适合屏幕的高度,但我不想要,我想强制位图具有我想要的宽度。如果位图高度的一部分超出屏幕,则无关紧要。
我需要在将图像添加到布局时强制宽度,我的意思是图像必须保持宽高比,但图像必须高于屏幕的高度,并且图像必须显示如果图像的高度高于屏幕的高度,则不完整。现在这没有发生,因为布局是强制宽度尊重图像并在屏幕高度显示图像的所有高度,然后我认为问题在于布局规则
使用以下方法创建位图:
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 :(得分: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);
我希望你明白这一点。
答案 1 :(得分:0)
尝试使用android:scaleType =“fitXY”此标记。
答案 2 :(得分:0)
除非您使用DIP(与设备无关的像素),否则不应对像素数进行硬编码。它可能适用于您的手机,宽度为320,但另一部手机呢?还是平板电脑?
您应该使用ImageView.scaleType。见here
CENTER_INSIDE可能就是你所需要的。
答案 3 :(得分:0)
在ImageView的XML文件中使用 android:background ,如果 android:layout_width =“fill_parent”,您设置为背景的图像将拉伸整个屏幕宽度ImageView的。这不是图像源,背景属性。
在Java文件中,同样的事情将通过以下代码实现。
setBackgroundDrawable(getResources().getDrawable(R.drawable.yourimagefile));
如果您暂时喜欢,可以使用我的建议。我再次告诉我建议使用背景属性 src 属性 ImageView
我也尝试将相同的效果用于图像视图的源而不是背景。我希望它可以帮助你。