我的活动应始终以横向模式显示。所以我添加了android:screenOrientation="landscape"
。
但问题是当我将设备旋转 180度时,显示会反转。有没有办法处理这个问题,以便始终正确显示屏幕元素。?
答案 0 :(得分:56)
实际上你真正想要的是指定:
android:screenOrientation="sensorLandscape"
在AndroidManifest.xml中。这将在横向和反向景观之间捕捉时收听传感器数据。
答案 1 :(得分:10)
其他人提到sensorLandscape
...要在您的活动(或基本活动)中以编程方式执行此操作,您可以将方向设置为:
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE);
我在onResume()
做这件事。当您在活动中间将设备翻转180度时,这将尊重横向和反向横向,而无需使用onConfigurationChanged()
。
这对我有帮助,因为对于平板电脑我只需要横向/横向反转,对于手机我只需要纵向/纵向反转,并且不想做两个单独的AndroidManifest文件。 ActivityInfo.SCREEN_ORIENTATION_SENSOR_PORTRAIT
也存在。
答案 2 :(得分:7)
所以只为每个人提供信息,这就是我所做的。
Display display = ((WindowManager) getSystemService(WINDOW_SERVICE)).getDefaultDisplay(); int orientation = display.getRotation(); if(orientation==Surface.ROTATION_180) { setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_REVERSE_LANDSCAPE); }
这样,即使用户将设备倒置,我的屏幕也始终正确定位。
答案 3 :(得分:2)
在Android Manifest中写下这个:
android:configChanges="orientation"
android:screenOrientation="landscape"
就像下面的例子一样。
<activity android:name=".MainActivity"
android:label="@string/app_name"
android:configChanges="orientation"
android:screenOrientation="portrait">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
答案 4 :(得分:0)
嗯。这取决于你正在使用的框架版本。试试这个开始:
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
如果效果很好。如果它不是你必须告诉我们更多关于你的应用程序的布局。
答案 5 :(得分:0)
好方法是使用
setRequestedOrientation(6);
6是sensorLandscape的值,但似乎没有定义的常量。