我正在开发一款应用程序,其中手机强制使用纵向模式,而平板电脑支持纵向模式以及横向模式。布局中的某些页面在layout-land文件夹中具有相应的横向版本。
问题
在手机上使用应用程序时(仅限肖像)并且在手机上自动旋转时,当应用程序显示为纵向模式时,将加载横向布局文件。
何时发生
要重新创建此行为,我会打开一个活动并旋转设备。然后,当我导航到另一个活动,或关闭并打开应用程序时,将加载横向布局。
强制纵向模式的方法
要在手机上强制使用肖像模式,请拨打
setRequestedOrientation (ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
在我的BaseActivity onCreate
方法中。
其他详情
targetSdkVersion:26 使用支持库26.0.0
感谢您的帮助!
编辑1:
不幸的是,使用(组合)清单文件中的以下设置会产生相同的行为。
android:screenOrientation="sensorPortrait"
android:screenOrientation="portrait"
android:configChanges="orientation"
编辑2:
我现在已经在多种设备(仿真器,One plus,摩托罗拉,三星等等)上进行了测试,这种奇怪的情况只发生在三星A5(api 23)上。
答案 0 :(得分:0)
其他活动是否也有该代码?
我的意思是,其他活动并没有扩展BaseActivity?
我希望在每个活动代码中设置AndroidManifest.xml
文件,例如>> android:screenOrientation="portrait"
答案 1 :(得分:0)
在项目清单文件的活动中添加此行android:screenOrientation="portrait"
。希望它运作良好。
答案 2 :(得分:0)
试试这个
<activity
android:name=".Activity"
android:configChanges="orientation|keyboardHidden|screenSize"
android:label="@string/title_activity_test_edit"
android:screenOrientation="sensorPortrait"
android:theme="@style/Theme.DesignDemo"
android:windowSoftInputMode="stateAlwaysHidden" />
纵向方向,但可以是基于设备传感器的正常或反向纵向。
请参阅此链接以获取更多详细信息:
https://developer.android.com/guide/topics/manifest/activity-element.html
答案 3 :(得分:0)
如你所说,
手机已强制使用纵向模式,而平板电脑则支持纵向模式 以及横向模式
在manifest
中设置屏幕方向不起作用。
使用layout-land-sw600dp
,layout-land-sw720dp
文件夹进行平板电脑的横向视图。另请查看此SO thread