我想在平板电脑上允许横向和纵向,仅限手机上的肖像。 That question has already been asked,但我面临任何提议的解决方案的错误。
我有各种尺寸defined depending on the height of the device(h500dp,h400dp等)。因此,如果我有我的手机(宽度为411dp,肖像高度为731dp)旋转到横向,然后我启动应用程序,即使活动出现在肖像,它也有取h400dp尺寸;好像根据我当前的手机方向(风景)评估高度。如果我在启动应用程序之前将手机放在肖像上,则需要h500dp尺寸,这是正确的尺寸。
我使用的代码是来自this answer的代码;相关代码位于活动onCreate
:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (!isTablet()) {
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
}
}
清单:
<activity
android:name=".login.LoginActivity"
android:configChanges="keyboardHidden|orientation|screenSize"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
答案 0 :(得分:0)
<activity
android:name=".MainActivity"
android:label=""
android:screenOrientation="portrait"
android:theme="@style/AppTheme.NoActionBar">
请参阅 https://developer.android.com/training/basics/supporting-devices/screens.html
如果您想为横向提供特殊布局,包括在大屏幕上,那么您需要同时使用大型和土地限定符:
MyProject/
res/
layout/ # default (portrait)
main.xml
layout-land/ # landscape
main.xml
layout-large/ # large (portrait)
main.xml
layout-large-land/ # large landscape
main.xml
/
使用屏幕尺寸确定设备类型。你可以参考this post
在第二步,您可以使用setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
更改屏幕方向。还有另一篇帖子here。
答案 1 :(得分:0)
请从AndroidManifest.xml
Activity
删除配置更改
设置android:configChanges="keyboardHidden|orientation|screenSize"
将限制布局在Orientation
更改时更新。