我希望我的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中删除了添加的人员,并在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>
结果是:它不允许我旋转,但当我这样做时,整个应用程序冻结,并且在我将其旋转回移动之前无法执行任何操作。
帮助我们!
答案 0 :(得分:0)
添加android:screenOrientation="portrait"
可以简单地做到这一点:
<activity android:name=".YourActivity"
android:configChanges="orientation"
android:screenOrientation="portrait"/>
答案 1 :(得分:0)
<强>第一强>
检查您的主题样式,如果您有代码用于屏幕方向,如果有,请将其删除。
然后移除
<intent-filter>
<action android:name="intent.to.front" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
我不知道你为什么要用它。尝试删除它并检查
答案 2 :(得分:0)
试试这个。
PORTRAIT YourActivity.this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
LANDSCAPE YourActivity.this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
答案 3 :(得分: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>
答案 4 :(得分:0)
当您声明横向或纵向值之一时,它是 被认为是定向的硬性要求 活动运行。因此,您声明的值将启用过滤 服务(例如Google Play),因此您的应用仅适用于 支持活动所需方向的设备。对于 例如,如果您声明“ landscape”,“ reverseLandscape”或 “ sensorLandscape”,那么您的应用程序仅对 支持横向定位的设备。但是,您还应该 明确声明您的应用程序需要纵向或纵向 与元素的横向。例如, 。这个 纯粹是Google Play(和其他 支持它的服务),而平台本身无法控制 当设备仅支持特定功能时是否可以安装您的应用 方向。
如果您想忽略此错误,请执行以下操作:
<activity
android:name="YourActivity"
...
android:screenOrientation="portrait"
tools:ignore="LockedOrientationActivity">
您可以在 this 页中阅读活动属性
答案 5 :(得分:0)
尽管对于某些人来说可能并不明显;如果您使用的是远程设备(使用wifi),则需要卸载该应用程序,然后通过电线将其重新安装。希望这能解决您的问题。