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

问题描述 投票:0回答:6

我希望我的活动仅在人像模式下运行,所以我尝试了不同的方法,但是它们都不起作用...在这里,它们是:

清单:

<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 layout screen-orientation
6个回答
0
投票

添加android:screenOrientation="portrait"可以解决问题:

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

0
投票

尝试一下。

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

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


0
投票

使用时:

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>

0
投票

第一

如果您有用于屏幕方向的代码,请检查主题样式,如果是,请将其删除。

然后删除

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

我不知道你为什么要使用这个。尝试将其删除并检查


0
投票

当您声明横向或纵向值之一时,被认为是定向的硬性要求活动运行。因此,您声明的值将启用过滤服务(例如Google Play),因此您的应用仅适用于支持您的活动所需方向的设备。对于例如,如果您声明“ landscape”,“ reverseLandscape”或“ sensorLandscape”,那么您的应用程序将仅对支持横向定位的设备。但是,您还应该明确声明您的应用程序需要纵向或纵向与元素的横向。例如,。这个纯粹是Google Play(和其他支持它的服务),而平台本身无法控制当设备仅支持特定功能时是否可以安装您的应用方向。

如果您想忽略此错误,请执行以下操作:

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

您可以在this页面中阅读活动属性


0
投票

思想人士应该知道,

如果您使用的是远程设备(带有wifi)进行更新,则需要卸载该应用程序,然后通过电线重新安装它。那么它将起作用。

© www.soinside.com 2019 - 2024. All rights reserved.