【问题标题】:Disable landscape on HDPI but not on default landscape在 HDPI 上禁用横向但不在默认横向上
【发布时间】:2012-03-09 20:10:39
【问题描述】:

我有一个应用程序,但问题是它需要支持平板电脑和手机。但是在平板电脑上,您可以使用横向而不是 portret,因为它足够大,可以显示所有内容。然而在手机上,这一切都搞砸了,因为屏幕太小了。

我想禁用手机而不是平板电脑的横向视图。

我看到您可以在 manifest.xml 文件中定义肖像,但是否可以根据布局 xml 禁用它?

例如:

-手机使用 layout-hdpi -tablets 默认布局

如果设备使用 layout-hdpi,则应仅启用纵向,否则可以进入横向。

【问题讨论】:

  • 我实际上不会那样做。我尝试使用我的第一个应用程序之一来做到这一点......而且......用户不喜欢那样。我遇到了很多糟糕的 cmets,例如“不旋转”、“需要横向”等(想想带有物理键盘的手机,在其中保持横向非常有意义)。
  • 我又做了一个,然后按钮更少,照顾所有屏幕确实不容易:/

标签: android portrait


【解决方案1】:

我是通过以下方式做到的:

  • 在清单中为 screenOrientation 类型:“@integer/screenOrientation”
  • 对于手机(如果您想要肖像),请将 screenOrientation 值设置为“1”
  • 对于平板电脑(如果需要横向),请将 screenOrientation 值设置为“0”

这个值来自source sdk,所以如果你想要不同的检查出来(在这个链接中搜索screenOrientation)。

我希望这个解决方案对你有所帮助。

【讨论】:

  • 那么清单如何知道他在使用手机或平板电脑。我无法为平板电脑构建应用程序,然后为手机构建它们:/
  • 从资源文件中知道。为 values-xlarge(用于平板电脑的文件夹)和 values(用于所有其他设备的文件夹)文件夹添加文件 values.xml。然后将 0 或 1 添加到此文件中。
【解决方案2】:

@pjanecze 给出的答案的替代方法是在代码中执行此操作:

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);

我在我的基本 Activity onCreate 方法中调用它。由于某种原因,清单方法对我不起作用。

一些用户报告上述代码被忽略的问题,但是可以通过首先将请求的方向设置为其他内容来解决此问题:

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-08-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-08
    • 2012-06-13
    相关资源
    最近更新 更多