首页 文章

如何显示适合屏幕宽度的位图?

提问于
浏览
0

我有一个位图,我需要在我的屏幕上显示它,水平适合我当前手机屏幕的所有深度(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 );

代码有什么问题?

4 回答

  • 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

    尝试使用android:scaleType =“fitXY”这个标签 .

  • 0

    除非您使用DIP(与设备无关的像素),否则不应对像素数进行硬编码 . 它可能适用于您的手机,宽度为320,但另一部手机呢?还是平板电脑?

    您应该使用ImageView.scaleType . 见here

    CENTER_INSIDE可能就是您所需要的 .

  • 0

    在ImageView的XML文件中使用 android:background ,如果为此ImageView,则设置为背景的图像将拉伸整个屏幕宽度 android:layout_width = "fill_parent" . 这不是图像源,背景属性 .

    在Java文件中,下面的代码将实现相同的功能 .

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

    如果您想暂时使用我的建议,可以使用我的建议 . 再一次,我告诉我建议使用 background 属性不 src 属性 ImageView

    我也尝试相同的效果图像视图的来源而不是背景 . 我希望它可以帮助你 .

相关问题