我的布局有两个版本,适用于较小的屏幕和较大的屏幕。顺便提一下,我有一个设备,在不同的方向需要不同的布局。在其他可能不是这样的设备上。我想基于屏幕宽度,而不是这样的方向。
我已阅读this article并注意到“可用屏幕宽度”(w<N>dp
修饰符)可用于指定正确的布局。它还说:
当屏幕方向在横向和纵向之间切换以反映当前可用于UI的实际宽度时,系统对应的宽度值会发生变化。
听起来很完美。所以我将较小的布局放在基座layout
文件夹中,将较大的布局放入layout-w750dp
。并选择更大的布局。问题是当我将设备旋转到纵向模式时,它不会切换到基本布局。
我使用this answer中的代码检查dp中的屏幕宽度。它的风景是960,肖像是600。然后,我确保为此活动指定的android:configChanges="orientation"
not 。我还将Log
放入此活动的onCreate()
中 - 当我旋转设备时确实调用它,因此它应该已经接收到正确的布局?..为什么它不起作用以及如何制作它工作?
更新:从一开始就以纵向模式启动活动(甚至整个应用程序)仍然会选择w750dp
布局。
更新2 :layout-land
也无效。仍然在纵向模式中选择此布局。奇。很明显,这个问题与宽度无关,但与资源选择器的一般功能有关。
答案 0 :(得分:1)
评论越来越长,所以要回答
我刚刚在平板电脑(768x1024 dp)上测试了layout
中的两个布局,layout-w900dp
中的第二个布局,一切正常。
第二种布局以横向模式显示,这是正确的,因为900&lt; 1024。
注意:我使用getResources().getConfiguration().screenWidthDp
作为屏幕宽度!
所以这肯定是你身边的问题:) 以太你搞砸了你的布局或安卓工作室搞砸了你:D。
很抱歉没有更明确的答案:/