我已经阅读了许多有关 Android 布局和屏幕尺寸的问题。我什至在这里提到了 Android 的页面 http://developer.android.com/guide/practices/screens_support.html#screen-independence
问题是我想念之间似乎有一个
我的应用程序支持 Gingerbread 到 Jelly bean 设备。我是这样配置的。
layout (for Gingerbread devices)
layout-sw320dp (for ICS/JB devies)
layout-sw600dp (for 7" tab's)
layout-sw720dp (for 10" tab's)
我在这些文件夹中有我所有的布局 xml,我通过使用 eclipse 中的图形布局并从设备更改为设备来调整它们以适应设备的大小。我以为一切都很好。
但是,我似乎缺少一些关键设备。
例如。在我的 Razr 上,它的大小不像 eclipse 图形布局中显示的那样。Razr 是 540x960 240dpi 设备,如果我使用公式获得 dp (dp = (px / dpi) * 160) 我得到 360dp,对吗?
这意味着它应该使用来自 sw320dp 的布局文件,对吧?出于某种原因,它会调整一些不合适的图标的大小。
另一个例子是使用 HTC Thunderbolt 的用户说他甚至无法加载应用程序。雷电是 480x800 和 217dpi,这将是 353dp?对吗?所以它应该从同一个 sw320dp 文件夹中提取资源。来自 Thunderbolt 的堆栈跟踪显示此错误
Caused by: java.lang.reflect.InvocationTargetException
Caused by: android.content.res.Resources$NotFoundException: Resource is not a Drawable (color or path): TypedValue{t=0x2/d=0x7f01006a a=-1}
该资源是 public static final int background_gb=0x7f01006a;
发生这种情况是因为它从布局文件夹而不是 layout-sw320dp 中提取布局。我将布局文件夹中的布局设置为用颜色而不是图片填充背景,因为我不断收到堆错误。当我在我的 nexus 一个模拟器上测试时,它工作正常。
所以我开始思考也许我没有正确地做到这一点。我查看了其他开发人员的 apk,我什至从未看到 layout-sw320dp 文件夹。但它似乎做了我最初需要做的事情。如果我把它排除在外,那么我的布局文件夹将控制 480x800 设备的布局,一直到我的 S4 的 1080x1920 设备。我看不出如何在一个布局 xml 中覆盖这么多设备。
对我有什么建议吗?
涵盖手机布局文件夹中所有内容的问题示例
连结一
连结 4
银河 S4