2012-02-14 5 views
7

He comprobado muchas preguntas en función de esto, pero todavía no consigo obtener la forma de bloquear la orientación de la pantalla en el paisaje a través de la aplicación. ?¿Bloquea la orientación de Android como horizontal en toda la aplicación?

<activity android:screenOrientation="landscape" 
     android:name=".BasicLayoutCheckActivity" 
     /> 

esto no está funcionando para mí se trata de volver a POTRAIT si se utiliza otra actividad

+0

¿Por qué no agregarlo a las otras actividades también? – WarrenFaith

Respuesta

10

En el Manifiesto, puede establecer screenOrientation en landscape for all the activities. Ha realizado el pedido para one activity, por lo que otras actividades se están abriendo en retrato, por lo que para fixing establezca all your activities with orientation como su primera actividad. Se vería algo como esto en el XML:

propiedad
<activity android:name=".BasicLayoutCheckActivity" android:screenOrientation="landscape"></activity> 
0

¿Cómo que por otra actividad? La configuración es por actividad. Decir si su aplicación tiene tres actividades, entonces debe especificar cada una como horizontal.

1

La orientación tiene que ser establecido para cada actividad individual de la aplicación.

4

También puede utilizar el siguiente en el método onCreate():

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); 

Saludos!

+0

Esto funciona mejor porque de esta manera puedo usar esto solo una vez en una clase base y usarlo en toda la aplicación. Agregar una etiqueta xml a cada actividad en el manifiesto es una solución fea y propensa a errores. Me pregunto por qué Android todavía no ha introducido una sola etiqueta para establecer la orientación en toda la aplicación. – zeeshan

3

Hey mira esto En el archivo AndroidManifest dentro de la actividad agregarlo

<activity 
android:screenOrientation="landscape" 
android:configChanges="keyboard|keyboardHidden|orientation"> 
+0

resolvió su problema si es así, márquelo como respondido – Goofy

0

Para evitar tener que hacer esto para cada actividad que se pueda registrar un ciclo de vida de devolución de llamada de la actividad en la clase de aplicaciones personalizadas (si lo tiene) .

Algo así como ...

public class MyApplication extends Application { 

    @Override 
    public void onCreate() { 
     super.onCreate(); 

     //Lock orientation in landscape for all activities, yaay! 
     registerActivityLifecycleCallbacks(new ActivityLifecycleCallbacks() { 
      @Override 
      public void onActivityCreated(Activity activity, Bundle savedInstanceState) { 
       activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);     
      } 

      @Override 
      public void onActivityStarted(Activity activity) { 

      } 

      @Override 
      public void onActivityResumed(Activity activity) { 

      } 

      @Override 
      public void onActivityPaused(Activity activity) { 

      } 

      @Override 
      public void onActivityStopped(Activity activity) { 

      } 

      @Override 
      public void onActivitySaveInstanceState(Activity activity, Bundle outState) { 

      } 

      @Override 
      public void onActivityDestroyed(Activity activity) { 

      } 
     }); 
    } 
} 
Cuestiones relacionadas