【问题标题】:Android - Force activity into portrait on phones onlyAndroid - 仅在手机上强制活动进入纵向
【发布时间】:2013-12-11 23:53:23
【问题描述】:

编辑:我把这个编辑放在上面是因为我认为我的问题需要重新表述。

我的 mainfest 中有一条关于以下某个场景的台词:

android:screenOrientation="portrait"
android:configChanges="keyboardHidden|orientation|screenSize"

这会将场景锁定为纵向。我需要的是一种在java中以编程方式解锁它的方法,而通常的方法似乎不起作用。我下面的代码块实际上是正确的,我只是在其他地方有错误的代码阻止它工作。


我想知道是否有一种方法可以在手机上强制特定活动为纵向,同时在平板电脑或任何其他更大的设备上仍允许它是纵向或横向?

但是,我的情况比大多数类似情况要复杂一些,因为我正在使用的活动继承自另一个我无法更改的活动类。出于某种原因,如果从电话调用 onCreate(),其他活动将崩溃,所以我不能只使用“setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);”在 onCreate() 中,因为调用 super.onCreate() 时应用程序仍然崩溃。

我尝试在清单中将活动锁定为纵向,然后将其添加到 onCreate:

if(!mIsPhone)
    {
        setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR);
    }

然而,这并没有做任何事情。场景在平板电脑上仍然锁定为纵向。

【问题讨论】:

  • 你能发布完整的 onCreate() 代码吗?

标签: android android-orientation


【解决方案1】:

首先,您可以使用以下方法确定设备是手机还是平板电脑:

public static boolean isTablet(Context context) {
return (context.getResources().getConfiguration().screenLayout
        & Configuration.SCREENLAYOUT_SIZE_MASK)
        >= Configuration.SCREENLAYOUT_SIZE_LARGE;
}

通过以下方式找到该设置方向后:

setRequestedOrientation (ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-03-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多