【问题标题】:Set a maximum height for different sized images为不同尺寸的图像设置最大高度
【发布时间】:2014-09-13 13:12:08
【问题描述】:

我一直在为以下问题苦苦挣扎。我有一个活动——让我们简单点——只有一个 ImageView。这个imageview 可以包含不同大小的图像 - 图像的 URL 由 Bundle 从以前的活动中添加。我想要实现的是为图像设置一个不能被任何类型的图像超过的最大高度,并保持纵横比。 问题之一是我不确定应该使用哪个scaleType,我也尝试添加setMaxHeight 参数但似乎没有效果。如果图像的高度没有达到最大高度,它应该明显更小。在我的情况下,宽度始终为fill_parent,问题在于高度。你怎么能做到这一点?

一开始我确实把 imageview 放到了 FrameLayout 中(后来我需要在 imageview 上放东西)。

 <FrameLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content" >

            <ImageView
                android:id="@+id/imageview1"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:scaleType="centerCrop"
                android:adjustViewBounds="true"
                android:src="@drawable/my_stub" />


        </FrameLayout>

【问题讨论】:

  • setMaxHeight 有什么问题?
  • 如果图像的高度大于 maxHeight 则有效。但是,如果图像具有例如2:1 纵横比(并且高度仍然大于 maxHeight)然后将图像按比例缩小直到出现全宽。如果图像的宽度大于高度,我需要缩放/裁剪图像直到达到 maxHeight。

标签: java android imageview frame


【解决方案1】:

试试

android:layout_width="wrap_content"

adjustViewBounds="false"
setScaleType="center"
layout_height="whatever height you want it to be"

您可能应该以编程方式设置最小宽度来处理小图像

其他一切都很好

【讨论】:

  • 仍然不放大,而是全宽显示整个图片。我需要强制它达到 maxHeight
  • 如果为宽度设置 match_parent,则视图(在这种情况下为图像)不能比其父视图更宽,如果您希望它使用最大高度并允许缩放,请设置宽度:wrap_content,它将放大直到达到全高并取消选中 :adjustViewbounds 和 scale :center
  • 差不多好了!但对于高度大于 maxHeight 的较大人像图像,它没有效果,并以全高显示。
  • 在这种情况下,您需要以编程方式处理它。通过 .getHeight() 获取图像高度,如果更大,则以编程方式将 adjustviewbound 设置为 true
  • 您必须先将图像转换为位图。完成后我会放代码
猜你喜欢
  • 2011-10-14
  • 2018-11-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-08-05
  • 2016-03-10
  • 2023-03-24
  • 2013-04-30
相关资源
最近更新 更多