我的布局如下:
<LinearLayout>
<ImageView>
android:width="wrap_content"
android:height:"wrap_content"
...
</ImageView>
<ImageView>
android:width="wrap_content"
android:height:"wrap_content"
...
</ImageView>
<ImageView>
android:width="wrap_content"
android:height:"wrap_content"
...
</ImageView>
<ImageView>
android:width="wrap_content"
android:height:"wrap_content"
...
</ImageView>
</LinearLayout>
图像的大小使得它们在540x960,275ppi屏幕上填满屏幕。但是当我在模拟器上运行我的应用程序时,最后一张图像被压扁了。
在阅读Supporting Multiple Screens文档后,我了解到在dp中指定图像尺寸而不是“wrap_content”应该涵盖不同的密度屏幕。
但是不同尺寸的屏幕呢?例如,如果我有两个不同大小的屏幕具有相同的像素密度,我可以有一个条件,我的图像适合屏幕上的一个,但不是另一个,对吧?有两种不同的布局是唯一的解决方案吗?
例如,两个不同大小(但密度相同)的屏幕可能有100和200个垂直像素可用,图像大小为150dps,因此它不适合第一个屏幕。我是对的吗?
提前致谢
答案 0 :(得分:2)
几乎所有试图用设置的位图填充整个窗口而不愿意裁剪,缩放或留下未覆盖区域的Android应用程序注定要失败。由于具有如此多的不同宽高比和屏幕尺寸,因此无法灵活地适应具有固定宽高比和大小的一组内容。即使你提供另一种处理不同尺寸屏幕的布局,也无法真正解决问题,因为毫无疑问,第三种设备的屏幕尺寸与你所覆盖的屏幕尺寸不同。< / p>
考虑使用一组图像,其中包含可以拉伸或裁剪而不会失去保真度的部分。这可能只是一种纯色,渐变,重复模式或其他可能的东西。或者,如果合适,您可以只允许滚动。所有这些都取决于您的内容以及您尝试实现的目标。
答案 1 :(得分:1)
请注意android:scaleType
中的ImageView
属性。默认情况下,系统会使用FIT_CENTER
中的ImageView.ScaleType
值来缩放图像。在这种情况下,系统会保持图像的原始宽高比,并确保它完全适合设备的一个宽度或高度。
抱歉,犯了大错。图像完全符合其中一个ImageView
。