【发布时间】:2012-11-09 08:40:53
【问题描述】:
同时工作和学习使用 Android,我注意到它的布局切换功能有一些奇怪/意外/不那么记录的行为,我还没有找到答案。
首先,正如文档所建议的那样,宽度和高度的限定符,例如 layout-w320dp 和 layout-h320p,应该使用“标准”值 - 240、320、480、600 等等。虽然documentation 还提到考虑了有效可用空间,但它没有进一步提及这如何影响高度。例如,通过在 320dp 大模拟器屏幕上调用 getResources().getConfiguration().screenHeightDp,返回的可用高度为 295。因此,使用 layout-h320p 是不准确的,因为它不会在 320dp 屏幕上正确“激活”。
我正在写的关于适应小屏幕的内容具有(应该)处理两种情况的能力:一种是宽度不够,另一种是高度不够。我发现我无法强制模拟器为我的情况选择正确的布局:我有一个文件夹用于layout-w320p,另一个用于layout-h240p。在具有 320p 可用高度和 480p 可用宽度的模拟器上运行时,layout-w320p 会加载。怎么能均匀处理这两种情况呢?不能同时指定宽度和高度限定符。
第三,既然想要在 2.2 之前支持自己的应用程序,除了通过“经典”限定符(小、中、大、x-large)之外,还有什么方法可以支持不同的屏幕?
编辑:我使用了 small/medium/large/xlarge 限定符模式,因为我想要支持的最低版本是 2.2。我还使用了port 和land 限定符,Android 在布局方面的决策通过这种方式更加清晰,但上述问题仍然存在。
【问题讨论】: