簡體   English   中英

Android 屏幕方向:縱向不起作用

[英]Android Screen Orientation: Portrait doesn't work

我希望我的 Activity 僅在縱向模式下運行,所以我嘗試了不同的方法,但它們都不起作用……它們是:

顯現:

<application
        android:name=".App"
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme">
        <activity
            android:name=".MainActivity"
            android:screenOrientation="portrait"
            android:configChanges="keyboardHidden|orientation"
            android:theme="@style/AppTheme.NoActionBar">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
            <intent-filter>
                <action android:name="intent.to.front" />

                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
        </activity>

沒用,即使我的手機關閉了屏幕旋轉,仍然可以旋轉。

接下來我嘗試了代碼。 從清單中刪除了添加的人員,並在 mainactivity 類中寫了這個:

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
        Utilities.setLocale(getApplicationContext());
        setContentView(R.layout.activity_main);

這是我的布局

<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools" android:id="@+id/drawer_layout"
    android:layout_width="match_parent" android:layout_height="match_parent"
    android:fitsSystemWindows="true" tools:openDrawer="start">

    <include layout="@layout/app_bar_main" android:layout_width="match_parent"
        android:layout_height="match_parent" />

    <android.support.design.widget.NavigationView android:id="@+id/nav_view"
        android:layout_width="wrap_content" android:layout_height="match_parent"
        app:itemIconTint="@color/grey"
        android:layout_gravity="start" android:fitsSystemWindows="true"
        app:headerLayout="@layout/nav_header_main" app:menu="@menu/activity_main_drawer" />

</android.support.v4.widget.DrawerLayout>

結果是:它不允許我旋轉,但是當我這樣做時,整個應用程序會凍結並且無法執行任何操作,直到我將其旋轉回 portrate。

幫幫我,伙計們!

添加android:screenOrientation="portrait"可以簡單地做到這一點:

<activity android:name=".YourActivity"
    android:configChanges="orientation"
    android:screenOrientation="portrait"/>

第一的

如果您有屏幕方向的代碼,請檢查您的主題樣式,如果有,請將其刪除。

然后刪除

<intent-filter>
    <action android:name="intent.to.front" />
    <category android:name="android.intent.category.DEFAULT" />
</intent-filter>

我不知道你為什么使用這個。 嘗試刪除它並檢查

嘗試這個。

肖像YourActivity.this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);

風景YourActivity.this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);

當你使用:

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);

此命令忽略清單文件中的所有方向設置,即使屏幕旋轉關閉,它也會旋轉。

您必須首先從 onCreate 方法中刪除此命令,然后將其寫入清單,它將起作用:

   <activity
        android:name=".MainActivity"
        android:screenOrientation="portrait"
        android:theme="@style/AppTheme.NoActionBar">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

當您聲明一個橫向或縱向值時,它被認為是對活動運行方向的硬性要求。 因此,您聲明的值允許按 Google Play 等服務進行過濾,因此您的應用程序僅可用於支持您的活動所需方向的設備。 例如,如果您聲明“landscape”、“reverseLandscape”或“sensorLandscape”,那么您的應用程序將僅適用於支持橫向的設備。 但是,您還應該明確聲明您的應用程序需要縱向或橫向的元素。 例如, 。 這純粹是由 Google Play(以及支持它的其他服務)提供的過濾行為,並且平台本身並不控制當設備僅支持某些方向時是否可以安裝您的應用程序。

如果您想忽略此錯誤,請執行以下操作:

    <activity
        android:name="YourActivity"
        ...
        android:screenOrientation="portrait"
        tools:ignore="LockedOrientationActivity">

您可以在頁面中讀取活動屬性

盡管對某些人來說可能並不明顯; 如果您使用的是遠程設備(使用 wifi),則需要卸載該應用程序,然后通過網絡重新安裝它。 希望這可以解決您的問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM