【问题标题】:i want to make my application only in landscape in android我想让我的应用程序只在android中的横向
【发布时间】:2016-04-08 14:09:23
【问题描述】:

我想让我的应用程序仅在横向模式下运行,但无法正常运行。我已经给出了screenOrientation = "landscape",即使第一页将处于横向模式并且其他活动将处于纵向模式。

XML 文件

<application android:icon="@drawable/icon" android:label="@string/app_name">
    <activity android:name=".Main"
              android:label="@string/app_name"
              android:screenOrientation="landscape" android:theme="@android:style/Theme.NoTitleBar.Fullscreen">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>     

    </activity>

    <activity android:name=".IntroHome"
              android:label="@string/app_name"
              android:screenOrientation="landscape">
    </activity>

    <activity android:name=".ObjectivesPage"
              android:label="@string/app_name"
              android:screenOrientation="landscape" >
    </activity>

    <activity android:name=".MenuPage"
              android:label="@string/app_name"
              android:screenOrientation="landscape" >
    </activity>
</application>

JAVA 类

public class ObjectivesPage extends Activity{

    ImageButton  imgButton;
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.objectivespage);
        setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);

        imgButton = (ImageButton)findViewById(R.id.buttonCloseNGo);
        imgButton.setOnClickListener(onClickCloseNGo);
    }

    private OnClickListener onClickCloseNGo = new OnClickListener(){

        public void onClick(View v) {
            Intent intent = new Intent(ObjectivesPage.this,MenuPage.class);
            startActivity(intent);
        }
    };
}

【问题讨论】:

  • 在发布问题之前,请尝试并发布您的问题

标签: android android-layout android-xml screen-orientation


【解决方案1】:

保持清单的这一部分原样。例如,考虑 IntroHome 活动。

<activity android:name=".IntroHome"
           android:label="@string/app_name"
           android:screenOrientation="landscape"  
           >
</activity>

对于活动 XML,请确保 layout-land 文件夹中有 IntroHome 活动布局 XMLonly。这样,您拥有的活动/活动将仅显示您定义的 XML 的横向版本。

【讨论】:

  • 嗯...奇怪。它在我的应用程序中完美运行。事实上,现在我检查了,我在默认布局文件夹中有一个较早的 XML,并且特定的只是在其横向版本中显示。该活动根本不会转到其纵向版本。
  • shripal,你添加到你的活动中了吗?它必须在 AndroidManifest 文件中。
【解决方案2】:

您也可以尝试从代码中设置方向

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);

查看此链接了解更多信息

http://www.devx.com/wireless/Article/40792/0/page/5

【讨论】:

  • 没有朋友我已经尝试过的所有这些类型的可能性请任何其他解决方案...我还在我的问题中为您提供我的 xml 文件
  • setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE) 应该可以正常工作。如果不是,您的实现中可能有问题。我过去也成功使用过它
  • 谢谢! XML 条目 android:screenOrientation="landscape" 不起作用,但这个基于代码的解决方案运行良好。
  • 当心!它将重新创建可能导致其他问题的活动。
【解决方案3】:

您可以根据需要使用以下代码:

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

你必须把这些代码放在setContentView(R.layout.layout_name.xml)之前。

【讨论】:

    【解决方案4】:

    尝试添加:

    android:configChanges="orientation|keyboardHidden"
    

    如果有帮助请告诉我!!只是猜测!!

    【讨论】:

      【解决方案5】:

      这看起来像是一篇旧帖子,但在我看来,如果您在清单文件中将模式设置为横向,然后在 java 代码中将模式切换为横向,您可能会两次切换模式导致设备改为以纵向模式渲染。尝试注释掉您的 java 文件中的代码,看看会发生什么。如果它不起作用,你所要做的就是把它改回来。简单易学的测试。

      【讨论】:

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