我希望我的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.
救救我!
6条答案
按热度按时间oxiaedzo1#
添加
android:screenOrientation="portrait"
可以简单地做到这一点:0md85ypi2#
试试这个
肖像
YourActivity.this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
景观
YourActivity.this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
pwuypxnk3#
使用时:
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION);
此命令忽略清单文件中的所有方向设置,即使屏幕旋转关闭,它也会旋转。
你必须先从onCreate方法中删除这个命令,然后将它写入你的清单,它就会工作:
c9x0cxw04#
第一次
检查你的主题样式,如果你有屏幕方向的代码,如果有,删除它。
然后删除
我不知道你为什么要用这个。试着把它取下来检查一下
6rqinv9w5#
当您声明横向或纵向值之一时,它被视为对活动运行方向的硬性要求。因此,您声明的值将启用Google Play等服务的过滤功能,因此您的应用仅可用于支持Activity所需方向的设备。例如,如果声明“landscape”、“reverseLandscape”或“sensorLandscape”,则应用程序将仅对支持横向的设备可用。但是,您还应该显式声明应用程序需要元素的纵向或横向方向。例如,。这纯粹是Google Play(以及其他支持它的服务)提供的过滤行为,当设备仅支持某些方向时,平台本身并不控制是否可以安装您的应用。
如果要忽略此错误,请执行以下操作:
可在**this**页面读取活动属性
9cbw7uwe6#
虽然对某些人来说可能不明显;如果你使用的是远程设备(使用WiFi),你将需要卸载应用程序,然后通过电线重新安装。希望这能解决你的问题。