该设置wrap_content
告诉您的视图将自身调整到其内容所需的尺寸。在您的测试中,您的图像为 1080x1920,您设备的屏幕分辨率也可能为 1080x1920,因此非常适合。由于您将宽度和高度设置为wrap_content
,Android 只是尝试使用尽可能多的屏幕空间来正确显示它提供的内容量。在这种情况下,由于可用的屏幕空间与内容的大小相匹配,因此非常适合。
但是如果设备屏幕不是 1080x1920 怎么办?在这种情况下,Android 将仅使用尽可能多的空间,但仍会尝试将图像放入可用屏幕空间的范围内。换句话说,系统将适当地缩小图像以将其放入您为其提供的容器中。但是,如果纵横比与图像不同,这可能会导致尴尬的配合。例如,请参见下面的屏幕截图:
此图像为 1920x1080,但请注意它不太适合。那是因为在横向查看时,这个 nexus 7 屏幕是 1824x1200。此外,屏幕顶部的工具栏占用了可用的屏幕空间,使我的可视区域更小,形状更尴尬。因此,虽然系统会喜欢这个图像一直延伸到左右边界,但它不能,因为那意味着高度将大于可视空间。由于我曾经wrap_content
显示此图像,因此系统尽可能多地使用垂直空间,结果是图像不太适合水平空间。
因此,为了更直接地解决您的问题,yeswrap_content
是一个相对尺寸设置,可以更轻松地在多个屏幕尺寸上获得一致的外观,类似于使用dp
. 但要意识到市场上有数百甚至数千种可用的 Android 设备,它们都有不同的屏幕尺寸和密度。因此,您的可绘制对象可能并不总是以您希望的方式出现在每台设备上。
克服这个问题的方法是提供多个版本的资源,并为不同的屏幕尺寸和密度提供备用布局文件。一旦你这样做了,你所能做的就是测试,测试,再测试一些。将模拟器用于奇怪的屏幕密度或您不拥有的设备,以确保您获得所需的外观。对于您的 1920x1080 图像,它在该设备上看起来很棒,但它如何适合比图像分辨率更小的大型平板电脑或小型手机呢?这些是您在设计中必须考虑的情况。
我建议您阅读这些资源,因为它们对于学习如何处理因不同屏幕尺寸和密度而导致的问题非常有帮助:
http://developer.android.com/guide/practices/screens_support.html
http://developer.android.com/training/multiscreen/screensizes.html