如何将Android应用程序的方向锁定为纵向模式?

时间:2013-03-30 13:07:19

标签: android user-interface

我正在开发一款Android应用,当用户旋转设备时,我不希望将其改为横向模式。此外,我希望锁定方向为手机上的纵向模式和平板电脑上的横向模式。这可以实现,如果是的话怎么样?感谢。

9 个答案:

答案 0 :(得分:124)

您只需在AndroidManifest.xml文件的activity元素内定义下面的属性即可。它会将您的方向限制为肖像。

  

机器人:screenOrientation = “纵向”

示例:

        <activity
            android:name="com.example.demo_spinner.MainActivity"
            android:label="@string/app_name"
            android:screenOrientation="portrait" >
        </activity>

另外,根据Eduard Luca在下面的评论,如果您想要旋转180度,也可以使用screenOrientation="sensorPortrait"

答案 1 :(得分:40)

您必须在AndroidManifest.xml中添加android:screenOrientation="portrait"指令。这将在您的<activity>代码中完成。

此外,Android开发者指南指出:

  

[...]您还应明确声明您的应用程序需要   无论是纵向还是横向   元件。例如,<uses-feature android:name="android.hardware.screen.portrait" />

答案 2 :(得分:15)

我可以看到你已经接受了一个完全没有解决问题的答案:

android:screenOrientation="portrait" 

这会强制您的应用在手机和平​​板电脑上都是肖像。

您可以在设备中强制使用该应用程序&#34;首选&#34;使用

进行定位
android:screenOrientation="nosensor"

这会导致您的应用在大多数手机手机和平板电脑上使用横向画像。 有许多带键盘的手机专为横向模式设计。强制您的应用程序为肖像可以使它几乎无法在此类设备上使用。 Android最近也迁移到其他类型的设备。最好让设备选择首选方向。

答案 3 :(得分:12)

可能是......你必须通过编程方式识别它是平板电脑还是手机......

if(isTablet)
{
      setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);      
}else
{
      setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
}

答案 4 :(得分:3)

<activity android:name=".yourActivity"
          android:screenOrientation="portrait" ... />

添加到主要活动并添加

android:configChanges="keyboardHidden"

在调用键盘时保持程序不被更改模式。

答案 5 :(得分:1)

在活动标签下的清单文件中将屏幕方向设置为纵向。

答案 6 :(得分:0)

只需添加:

android:screenOrientation="portrait"

在“ AndroidManifest.xml ”中:

<activity
android:screenOrientation="portrait"
android:name=".MainActivity"
android:label="@string/app_name">
</activity>

答案 7 :(得分:0)

<application>
<activity>中为所有应用程序

FROM adoptopenjdk/openjdk11-openj9:alpine as base ADD libs/ /libs ADD service.jar /service.jar RUN mkdir /hi WORKDIR /hi RUN ls / RUN java -Xshareclasses:name=mycache -Xshareclasses:cacheDir=/hi -Xshareclasses -jar /usr/share/app/service.jar & RUN sleep 5 RUN ls -la /hi FROM adoptopenjdk/openjdk11-openj9:alpine-jre COPY --from=base libs/ /usr/share/app/libs COPY --from=base service.jar /usr/share/app/service.jar RUN /bin/sh -c 'ps aux | grep java | grep service | awk '{print $2}' | xargs kill -1' #RUN java -Xshareclasses:listAllCaches ENTRYPOINT ["java","-jar", "-Xshareclasses" , "-Xtune:virtualized", "-XX:+UseContainerSupport", "/usr/share/app/service.jar"] 中的实际活动

答案 8 :(得分:0)

在活动标签下的清单文件中将屏幕方向设置为纵向。

这里是例子

您需要输入每个活动

在活动中添加以下行

肖像

android:screenOrientation="portrait"
tools:ignore="LockedOrientationActivity"

对于风景

android:screenOrientation="landscape"
tools:ignore="LockedOrientationActivity"

此处是MainActivity的示例

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    package="org.thcb.app">
 
    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">

        <activity android:name=".MainActivity"
            android:screenOrientation="portrait"
            tools:ignore="LockedOrientationActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

<activity android:name=".MainActivity2"
            android:screenOrientation="landscape"
            tools:ignore="LockedOrientationActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>