我正在尝试编写一个应用程序,我希望将手机锁定为纵向,但允许平板电脑版本同时具有横向和纵向。
我根据以下所有问题创建了一些几乎可以工作的东西......
如何锁定手机的屏幕方向,而不是平板电脑?(Android) 如何只允许平板电脑的横向/纵向 手机纵向,平板电脑横向(Android-Layout) 横向模式仅在平板电脑 中锁定手机在纵向模式
到目前为止,我所做的是将 Activity 扩展到我自己的基本 Activity 并在 onCreate 和覆盖的 onConfigurationChanged 中包含方向更改代码
@Override
protected void onCreate(Bundle savedInstanceState) {
if(!(new DeviceHelper().isTablet(this)))
{
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
}
super.onCreate(savedInstanceState);
setupActionBar(getActivity());
}
@Override
public void onConfigurationChanged(Configuration newConfig) {
//don't reload the current page when the orientation is changed
if(!(new DeviceHelper().isTablet(this)))
{
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
}
super.onConfigurationChanged(newConfig);
}
一切正常(我覆盖了 onConfigurationChanged 以避免活动被破坏和重新创建,这会导致黑屏一秒钟)。
我的主要问题是,如果您以横向方式握住手机,那么活动仍然是纵向的……完美!但是,因为手机是实际的横向布局,所以使用横向布局,这是来自平板电脑的布局。
我的理解是,当调用setRequestedOrientation时,它应该立即触发onConfigurationChanged,但是,首先调用片段,然后布局错误膨胀,然后再调用onConfigurationChanged,这意味着已经设置了横向布局。
我知道我可以根据配置在每个活动中设置布局,但我真的不想这样做。
那么如何让应用程序根据 setRequestedOrientation 使用适当 res 文件夹中的适当布局文件。
谢谢