wake-up-neo.com

Orientierungsmodus "Hochformat" erzwingen

Ich versuche, den "Hochformat" -Modus für meine Anwendung zu erzwingen, da meine Anwendung absolut nicht für den "Querformat" -Modus konzipiert ist.

Nachdem ich einige Foren gelesen hatte, fügte ich folgende Zeilen in meine Manifest-Datei ein:

<application 
  Android:debuggable="true"
  Android:icon="@drawable/icon" 
  Android:label="@string/app_name"
  Android:screenOrientation="portrait">

Auf meinem Gerät (HTC Desire) funktioniert es jedoch nicht. Es wird von "Hochformat" auf "Querformat" umgeschaltet, wobei die Zeilen aus der Manifestdatei ignoriert werden.

Nachdem ich mehr Foren gelesen hatte, versuchte ich, dies in meine Manifest-Datei aufzunehmen:

<application 
  Android:debuggable="true"
  Android:icon="@drawable/icon" 
  Android:label="@string/app_name"
  Android:configChanges="orientation"       
  Android:screenOrientation="portrait">

und diese Funktion in meiner Aktivitätsklasse:

public void onConfigurationChanged(Configuration newConfig)
{
    super.onConfigurationChanged(newConfig);
    setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
}

Aber auch hier kein Glück.

279
thomaus

Wenden Sie die Ausrichtung nicht auf das application -Element an, sondern wenden Sie das Attribut auf das activity -Element an. Außerdem müssen Sie configChanges wie unten angegeben festlegen .

Beispiel:

<activity
   Android:screenOrientation="portrait"
   Android:configChanges="orientation|keyboardHidden">
</activity>

Dies wird in der Manifestdatei AndroidManifest.xml Angewendet.

509
C0deAttack

Beachten Sie, dass

Android:screenOrientation="portrait"     
Android:configChanges="orientation|keyboardHidden"

wird in die Manifestdatei eingefügt, in der die Aktivität definiert ist.

22
NULL pointer

Ich denke Android:screenOrientation="portrait" kann für einzelne Aktivitäten verwendet werden. Also benutze dieses Attribut in <activity> tag like:

<activity Android:name=".<Activity Name>"
    Android:label="@string/app_name" 
    Android:screenOrientation="portrait">
   ...         
</activity>
12
Pinki

Wenn Sie eine Menge Aktivitäten wie meine haben, können Sie dies in Ihrer Anwendung tun oder wenn Sie nicht den Code für jedes Aktivitäts-Tag im Manifest eingeben möchten.

in Ihrer Application Base-Klasse erhalten Sie einen Lifecycle-Callback

im Grunde genommen geschieht für jede Aktivität, die beim Erstellen des On-Create-In-Application-Class-Triggers ausgelöst wird, der Code.

public class MyApplication extends Application{

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

  registerActivityLifecycleCallbacks(new ActivityLifecycleCallbacks() {
            @Override
            public void onActivityCreated(Activity activity, Bundle bundle) {
                activity.setRequestedOrientation(
                        ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);


// for each activity this function is called and so it is set to portrait mode


            }

            @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 bundle) {

            }

            @Override
            public void onActivityDestroyed(Activity activity) {

            }
        });
}

ich hoffe das hilft.

9
Muneef M

Set Hochformat oder Querformat erzwingen, Linien hinzufügen.

Import unter der Zeile:

import Android.content.pm.ActivityInfo;

Unterhalb der Zeile direkt über setContentView(R.layout.activity_main); hinzufügen

Für Hochformat:

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);//Set Portrait

Für Landschaft:

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);//Set Landscape

Das wird auf jeden Fall funktionieren.

6
Parth Patel

Laut Android-Dokumentation sollten Sie als mögliche Konfigurationsänderung auch häufig screenSize angeben.

Android:configChanges="orientation|screenSize"

Wenn Ihre Anwendung auf API-Level 13 oder höher abzielt (wie durch die Attribute minSdkVersion und targetSdkVersion deklariert), sollten Sie auch die Konfiguration "screenSize" deklarieren, da sie sich auch ändert, wenn ein Gerät zwischen Hoch- und Querformat wechselt.

Wenn Sie alle den Wert keyboardHidden in Ihre Beispiele aufnehmen, sollten Sie dann auch locale, mcc, fontScale, keyboard, _ [$ var] berücksichtigen. _ und andere?..

4
Martynas

Ich hatte diese Zeile in meiner AndroidManifest.xml

<activity 
    Android:configChanges="orientation|keyboardHidden|keyboard|screenSize|locale"
    Android:label="@string/app_name" Android:name="Project Name"
    Android:theme="@Android:style/Theme.Black.NoTitleBar">

Was ich geändert habe (gerade hinzugefügt Android:screenOrientation="portrait")

<activity 
    Android:configChanges="orientation|keyboardHidden|keyboard|screenSize|locale"
    Android:label="@string/app_name" Android:name="Project Name"
    Android:screenOrientation="portrait"
    Android:theme="@Android:style/Theme.Black.NoTitleBar">

Das hat Dinge für mich behoben.

3
Ian Jamieson

Eine Ergänzung: Ich habe kürzlich eine App aktualisiert, die vorherige funktionierte sowohl im Quer- als auch im Hochformat, und ich möchte, dass die aktualisierte Version im Hochformat funktioniert

Android:screenOrientation="portrait"

auf die entsprechende Aktivität, und es ist gerade abgestürzt, als ich das Update getestet habe. Dann habe ich hinzugefügt

Android:configChanges="orientation|keyboardHidden"

auch und es funktioniert.

2
user2819453

Wenn Sie in debug und release Builds unterschiedliche Ausrichtungen unterstützen möchten, schreiben Sie dies (siehe https://developer.Android.com/studio/build/gradle-tips#share) -eigenschaften-mit-dem-manifest ).

Im build.gradle Ihres app Ordners schreiben:

Android {
    ...
    buildTypes {
        debug {
            applicationIdSuffix '.debug'
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-Android.txt'), 'proguard-rules.pro'
            // Creates a placeholder property to use in the manifest.
            manifestPlaceholders = [orientation: "fullSensor"]
        }
        release {
            debuggable true
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-Android.txt'), 'proguard-rules.pro'
            // Creates a placeholder property to use in the manifest.
            manifestPlaceholders = [orientation: "portrait"]
        }
    }
}

Dann können Sie in AndroidManifest diese Variable "Ausrichtung" in jedem Activity verwenden:

<activity
    Android:name=".LoginActivity"
    Android:screenOrientation="${orientation}" />

Du kannst hinzufügen Android:configChanges:

manifestPlaceholders = [configChanges: "", orientation: "fullSensor"] in debug und manifestPlaceholders = [configChanges: "keyboardHidden|orientation|screenSize", orientation: "portrait"] in Freigabe,

<activity
    Android:name=".LoginActivity"
    Android:configChanges="${configChanges}"
    Android:screenOrientation="${orientation}" />
1
CoolMind

Ich denke, Sie möchten hinzufügen Android:configChanges="orientation|keyboardHidden" zu Ihrer Tätigkeit? Andernfalls wird die Aktivität bei Konfigurationsänderung neu gestartet. Das onConfigurationChanged würde dann nicht aufgerufen, nur das onCreate

1
Nanne