Pregunta Android: ¿desactivar el modo paisaje?


¿Cómo puedo desactivar el modo horizontal para algunas de las vistas en mi aplicación de Android?


796
2018-02-24 15:29


origen


Respuestas:


Añadir android:screenOrientation="portrait" a la actividad en AndroidManifest.xml. Por ejemplo:

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

EDITAR: Dado que esto se ha convertido en una respuesta súper popular, me siento muy culpable ya que forzar el retrato rara vez es la solución correcta a los problemas a los que se aplica con frecuencia.
Las principales advertencias con el retrato forzado:

  • Esto no lo absuelve de tener que pensar en la actividad eventos del ciclo de vida o bien guardar / restaurar el estado. Hay un montón de cosas además de la rotación de aplicaciones que pueden desencadenar una actividad destrucción / recreación, incluyendo cosas inevitables como la multitarea. No hay atajos; aprender a usar paquetes y retainInstance fragmentos
  • Tenga en cuenta que, a diferencia de la experiencia bastante uniforme del iPhone, hay muchos dispositivos en los que el retrato no es la orientación claramente popular. Cuando los usuarios están en dispositivos con teclados de hardware o juegos, al igual que Droid 1-4, Xperia Play o Nvidia Shield forcing portrait, pueden hacer que su aplicación sea una molestia gigante de usabilidad (especialmente en Shield). Si su aplicación no tiene un caso de uso extremadamente específico que podría conducir a una experiencia completamente negativa para apoyar otras orientaciones, probablemente no debería forzar el paisaje. Estoy hablando de cosas como "esta es una aplicación de control remoto para un teléfono con un blaster IR en un solo lado del dispositivo" o "esta es una aplicación de caja registradora para un modelo específico de tableta que siempre se usa en un dispositivo fijo". base de hardware ".

Entonces, la mayoría de las aplicaciones deberían permitir que los sensores del teléfono, el software y la configuración física tomen su propia decisión sobre cómo el usuario desea interactuar con su aplicación. Sin embargo, en algunos casos es posible que desee pensar si no está satisfecho con el comportamiento predeterminado de sensor orientación en su caso de uso:

  • Si su principal preocupación es la orientación accidental de cambios en la actividad media que cree que los sensores y el software del dispositivo no soportarán bien (por ejemplo, en un juego basado en inclinación) considere la posibilidad de admitir paisaje y retrato, pero usando nosensor para la orientación. Esto fuerza el panorama en la mayoría de las tabletas y retratos en la mayoría de los teléfonos, pero aún no lo recomendaría para la mayoría de las aplicaciones "normales" (algunos usuarios simplemente escriben el teclado de pantalla en sus teléfonos y muchos usuarios de tabletas leen en retrato, y deberías dejarlos).
  • Si tu todavía necesidad de forzar retrato por alguna razón, sensorPortrait puede ser mejor que portrait para Android 2.3+; esto permite el retrato boca abajo, que es bastante común en el uso de tabletas.

1401
2018-02-24 17:04



No estaba al tanto de la AndroidManifest.xml Cambie el archivo hasta leer esta publicación, por lo que en mis aplicaciones lo he usado en su lugar:

setRequestedOrientation (ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);     //  Fixed Portrait orientation

97
2017-10-18 14:53



Agrega esto android:screenOrientation="portrait" en su archivo de manifiesto donde declara su actividad como esta

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

Si quieres usar el código java prueba

setRequestedOrientation (ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); 

antes de llamar setContentView método para su actividad en onCreate().

Espero que esta ayuda y fácil de entender para todos ...


32
2017-09-27 09:47



Muchas de las respuestas aquí sugieren usar "portrait"en su archivo AndroidManifest.xml Esto podría parecer una buena solución, pero como se señala en la documentación, usted está seleccionando dispositivos que solo pueden tener el paisaje. También está forzando a ciertos dispositivos (que funcionan mejor en el paisaje) a entrar en el retrato, sin obtener la orientación adecuada.

Mi sugerencia es usar "nosensor" en lugar. Esto dejará que el dispositivo use su orientación preferida predeterminada, no bloqueará compras / descargas en Google Play, y se asegurará de que el sensor no estropee su juego (NDK, en mi caso).


19
2017-08-21 14:41



Si quieres configuraciones de usuario,

entonces yo recomendaría setRequestedOrientation (ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);

Puede cambiar la configuración desde un menú de configuración.

Lo necesito porque mis temporizadores deben corresponder a lo que hay en la pantalla, y al girar la pantalla se destruirá la actividad actual.


9
2018-02-10 04:46



Simplemente agregue Like this Line en su manifiesto

android: screenOrientation = "retrato"

<manifest
    package="com.example.speedtestmeter"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="8" />

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >

        <activity
            android:name="MainActivity"
            android:label="@string/app_name"
            android:screenOrientation="portrait" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

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

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

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

    </application>

</manifest>   

8
2018-02-05 09:30



Simplemente agregue este atributo en su etiqueta de actividad.

 android:screenOrientation="portrait"

5
2017-10-01 07:00



debes cambiar android:screenOrientation="sensorPortait" en AndroidManifest.xml


5
2018-01-03 06:04