基于屏幕宽度的纵向和横向模式的不同布局,而不是方向本身

时间:2017-03-28 13:25:00

标签: android android-layout

我的布局有两个版本,适用于较小的屏幕和较大的屏幕。顺便提一下,我有一个设备,在不同的方向需要不同的布局。在其他可能不是这样的设备上。我想基于屏幕宽度,而不是这样的方向。

我已阅读this article并注意到“可用屏幕宽度”(w<N>dp修饰符)可用于指定正确的布局。它还说:

  

当屏幕方向在横向和纵向之间切换以反映当前可用于UI的实际宽度时,系统对应的宽度值会发生变化。

听起来很完美。所以我将较小的布局放在基座layout文件夹中,将较大的布局放入layout-w750dp。并选择更大的布局。问题是当我将设备旋转到纵向模式时,它不会切换到基本布局。

我使用this answer中的代码检查dp中的屏幕宽度。它的风景是960,肖像是600。然后,我确保为此活动指定的android:configChanges="orientation" not 。我还将Log放入此活动的onCreate()中 - 当我旋转设备时确实调用它,因此它应该已经接收到正确的布局?..为什么它不起作用以及如何制作它工作?

更新:从一开始就以纵向模式启动活动(甚至整个应用程序)仍然会选择w750dp布局。

更新2 layout-land也无效。仍然在纵向模式中选择此布局。奇。很明显,这个问题与宽度无关,但与资源选择器的一般功能有关。

1 个答案:

答案 0 :(得分:1)

评论越来越长,所以要回答 我刚刚在平板电脑(768x1024 dp)上测试了layout中的两个布局,layout-w900dp中的第二个布局,一切正常。 第二种布局以横向模式显示,这是正确的,因为900&lt; 1024。

注意:我使用getResources().getConfiguration().screenWidthDp作为屏幕宽度!

所以这肯定是你身边的问题:) 以太你搞砸了你的布局或安卓工作室搞砸了你:D。

很抱歉没有更明确的答案:/