Android屏幕方向:肖像不起作用

oewdyzsn  于 2023-06-28  发布在  Android
关注(0)|答案(6)|浏览(139)

我希望我的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>

不工作,仍然可以旋转,即使我的手机有屏幕旋转关闭。
接下来我试着从代码开始。从manifest中删除了added staff,并在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.
救救我!

oxiaedzo

oxiaedzo1#

添加android:screenOrientation="portrait"可以简单地做到这一点:

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

0md85ypi2#

试试这个
肖像YourActivity.this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
景观YourActivity.this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);

pwuypxnk

pwuypxnk3#

使用时:
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION);
此命令忽略清单文件中的所有方向设置,即使屏幕旋转关闭,它也会旋转。
你必须先从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>
c9x0cxw0

c9x0cxw04#

第一次

检查你的主题样式,如果你有屏幕方向的代码,如果有,删除它。

然后删除

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

我不知道你为什么要用这个。试着把它取下来检查一下

6rqinv9w

6rqinv9w5#

当您声明横向或纵向值之一时,它被视为对活动运行方向的硬性要求。因此,您声明的值将启用Google Play等服务的过滤功能,因此您的应用仅可用于支持Activity所需方向的设备。例如,如果声明“landscape”、“reverseLandscape”或“sensorLandscape”,则应用程序将仅对支持横向的设备可用。但是,您还应该显式声明应用程序需要元素的纵向或横向方向。例如,。这纯粹是Google Play(以及其他支持它的服务)提供的过滤行为,当设备仅支持某些方向时,平台本身并不控制是否可以安装您的应用。
如果要忽略此错误,请执行以下操作:

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

可在**this**页面读取活动属性

9cbw7uwe

9cbw7uwe6#

虽然对某些人来说可能不明显;如果你使用的是远程设备(使用WiFi),你将需要卸载应用程序,然后通过电线重新安装。希望这能解决你的问题。

相关问题