【发布时间】:2017-03-28 13:25:00
【问题描述】:
我有两个版本的布局,用于小屏幕和大屏幕。顺便说一句,我有一个设备,在不同的方向上需要不同的布局。在其他设备上可能不是这样。我想基于屏幕宽度,而不是这样的方向。
我已阅读this article 并注意到“可用屏幕宽度”(w<N>dp 修饰符)可用于指定正确的布局。它还说:
当屏幕的方向在横向和纵向之间切换时,系统对应的宽度值会发生变化,以反映您的 UI 可用的当前实际宽度。
听起来很完美。所以我把较小的布局放在基础layout 文件夹中,将较大的布局放在layout-w750dp 中。并选择较大的布局。问题是当我将设备旋转到纵向模式时它不会切换到基本布局。
我已使用this answer 中的代码检查 dp 中的屏幕宽度。横向960,纵向600。然后我确定android:configChanges="orientation" 不是为此活动指定的。我还把Log 放到了这个活动的onCreate() 中——当我旋转设备时它确实被调用了,所以它应该得到正确的布局?.. 为什么它不起作用以及如何让它起作用?
更新:从一开始就以纵向模式启动 Activity(甚至整个应用程序)仍然会选择 w750dp 布局。
更新 2:layout-land 也不起作用。在纵向模式下仍然选择此布局。奇怪的。很明显,这个问题与宽度无关,而是与资源选择器的一般功能有关。
【问题讨论】:
-
横向需要
res/layout-land文件夹 -
@cricket_007:这正是我不想做的。你读过这个问题吗?
-
android:configChanges中还有其他内容吗? -
@makvasic:不,这个特定的活动只有在清单中的名称,没有别的。另外,请参阅我在问题底部编辑的更新。这个问题可能根本与方向变化无关。