2011-06-01 31 views
14

我需要类似于<img width="100%" />的Android <ImageView>。我的意思是调整宽度以适应所有可用空间(缩小或放大图像宽度)并自动更改高度以保持宽高比。ImageView一维以适应可用空间,然后评估以保持宽高比

Something like <ImageView android:layout_width="match_parent" android:layout_height="auto">

使用android:scaleType="fitCenter"做像我想要的东西,但只有形象,不改变视图本身的高度。当我将展位尺寸设置为match_parent时,我会得到我想要的,但前提是屏幕上只有一个图像。但我需要一些图片下的文字。

这是唯一的方法创建ImageView的孩子? 例如android:adjustViewBounds="true"对我没有任何帮助。

回答

18

我发现问题在哪里。 ImageView的默认实现无法放大图像。如果图像大于屏幕宽度android:adjustViewBounds =“true”可以正常工作,并调整高度以保持图像的宽高比。但如果图像的宽度小于屏幕宽度,则不会升级它。

这是原因由该代码

if (newHeight <= heightSize) { 
    heightSize = newHeight; 
} 

在ImageView的类(上线688,API 10)

我提出的ImageView其允许放大图像以适合宽度的特殊子。

这里是:https://gist.github.com/tprochazka/5486822

+0

我用你的代码,在ListView,与通用图像加载器,我注意到,与大图像,小摊UI很多。任何想法如何使它更有效率? – Tamas 2013-07-25 12:42:29

+0

我的修改是为了适合较大的IamgeView区域,例如,如果用户在平板电脑或屏幕密度较高的新设备上运行该应用程序,可以选择合适的小图像。如果你想在ListView中使用大图像,你应该缩小它以适应ImageView的大小,并在LRU磁盘缓存中缓存这个大小。 – ATom 2013-07-29 20:27:12

相关问题