【问题标题】:android: stretch image in imageview to fit screenandroid:在imageview中拉伸图像以适应屏幕
【发布时间】:2011-06-07 18:26:53
【问题描述】:

我有一个imageview,其高度和宽度设置为fill_parent,而linearlayout 设置了相同的值。所以我想这应该将我的图像设置为适合屏幕。但它只适合 80%(横向模式下的顶部和底部边距)。

我尝试了以下代码但没有成功:

Display display = getWindowManager().getDefaultDisplay(); 
int width = display.getWidth();
int height = display.getHeight();

imgView.setMinimumWidth(width);
imgView.setMinimumHeight(height);

imgView.setMaxWidth(width);
imgView.setMaxHeight(height);

还有其他想法吗?

【问题讨论】:

  • 虽然这是一个稍微不同的问题,this answer 应该可以帮助你。

标签: android imageview


【解决方案1】:

以编程方式更改使用:

imgview.setScaleType(ScaleType.FIT_XY);

从xml改用:

 android:scaleType="fitXY"

【讨论】:

  • 我知道这就是您想要的,但对于您关心宽高比的图像,这会拉长它。
  • 在 ScrollView 中为 ImageView 创造奇迹。连方面都保持正确。
  • 同样可以在布局xml中定义,android:scaleType="fitXY"
  • 要使图像填满所有区域并保持良好的纵横比,请使用v.setAdjustViewBounds(true); v.setScaleType(ImageView.ScaleType.CENTER_CROP);
  • 像魅力一样工作
【解决方案2】:

在你的布局的xml文件中给出android:scaleType="fitXY"
P.S :这适用于使用android:src="..." 而不是android:background="..." 设置图像的情况,因为背景默认设置为拉伸并适合视图。

【讨论】:

  • 后台的东西没有帮我解决问题,我做错了什么吗?请看:stackoverflow.com/questions/14164473/…
  • 如果您对图像的宽度进行硬编码并希望缩放高度,这不会考虑纵横比
  • 那我怎样才能让它适合整个屏幕呢?我希望它仍然是成比例的
  • +1 表示它适用于 android:src="..." 而不是 android:background="..." 这很重要
【解决方案3】:

尝试使用:

imageview.setFitToScreen(true);
imageview.setScaleType(ScaleType.FIT_CENTER);

这将使您的图像视图以正确的比例适合屏幕。

【讨论】:

  • "imageview.setFitToScreen(true);" - 那是什么?一些未记录的方法?
  • 我正在使用 eclipse,但无法编译:imageview.setFitToScreen(true)
  • android中没有这样的方法。
  • 也许他的意思是setFitsSystemWindows() ??
【解决方案4】:

使用这个:

ImageView.setAdjustViewBounds(true);

【讨论】:

  • 这与android:scaleType="fitXY" 结合使用是有效的。谢谢
  • @smac89 这些组合与仅使用 FIT_CENTER 有什么区别?不应该使用 FIT_CENTER?
  • @Jenix,请注意,我上次接触 Android 已经有一段时间了,但我相信这样做的原因 fitXY 是为了使图像按比例拉伸以适合设置的框架/视图in. 使用FIT_CENTER 听起来它只会将图像放在视图的中心,但不会填满视图。我可能是错的,但您可以尝试其中任何一个来找出有效的方法
  • @smac89 在询问之前我已经对它们进行了测试,并且效果相同。我很好奇原因,但现在认为您不知道 FIT_CENTER,就像我不知道您告诉我的组合一样。 :)
【解决方案5】:

接受的答案是完美的,但是如果你想从 xml 中做,你可以使用android:scaleType="fitXY"

【讨论】:

    【解决方案6】:

    我在 Xml 文件中使用了这个 android:scaleType="fitXY" 代码。

    【讨论】:

      【解决方案7】:

      只需将您的 ImageView 高度和宽度更改为 wrap_content 并使用

      exampleImage.setScaleType(ImageView.ScaleType.FIT_XY);

      在您的代码中。

      【讨论】:

        【解决方案8】:

        如果你使用android:scaleType="fitXY",那么你必须指定

        android:layout_width="75dp"android:layout_height="75dp"

        如果使用 wrap_content 它不会延伸到你需要的东西

        <ImageView
        android:layout_width="75dp"
        android:layout_height="75dp"
        android:id="@+id/listItemNoteImage"
        android:src="@drawable/MyImage"
        android:layout_alignParentTop="true"
        android:layout_alignParentStart="true"
        android:layout_marginStart="12dp"
        android:scaleType="fitXY"/>
        

        【讨论】:

          【解决方案9】:

          对于 XML 安卓

          android:src="@drawable/foto1"
          android:layout_width="match_parent"
          android:layout_height="match_parent"
          android:scaleType="centerCrop"
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2012-04-07
            • 2013-08-22
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多