【问题标题】:Different layouts for portrait and landscape modes based on screen width, not orientation per se基于屏幕宽度而不是方向本身的纵向和横向模式的不同布局
【发布时间】: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 布局。

更新 2layout-land 也不起作用。在纵向模式下仍然选择此布局。奇怪的。很明显,这个问题与宽度无关,而是与资源选择器的一般功能有关。

【问题讨论】:

  • 横向需要res/layout-land文件夹
  • @cricket_007:这正是我不想做的。你读过这个问题吗?
  • android:configChanges 中还有其他内容吗?
  • @makvasic:不,这个特定的活动只有在清单中的名称,没有别的。另外,请参阅我在问题底部编辑的更新。这个问题可能根本与方向变化无关。

标签: android android-layout


【解决方案1】:

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

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

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

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

【讨论】:

  • 我明白了。很奇怪。感谢您的测试。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-04-05
  • 1970-01-01
  • 2015-11-21
  • 1970-01-01
相关资源
最近更新 更多