在使用Android的同时工作和学习,我注意到它的布局切换功能出现了一些奇怪/意外/未被记录的行为,对此我还没有找到答案。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大)的方式,还有什么方法可以支持不同的屏幕吗?
编辑:我采取了使用小/中/大/ xlarge限定符模式,因为我想支持的最低版本是2.2。我也使用port
和land
限定符,Android在布局中的决策更加清晰,但前述问题依然存在。