2016-05-05 50 views
0

我正在开发一个应用程序,需要在智能手机中严格以纵向模式运行,严格在平板电脑上以横向模式运行。我使用下面的代码在我登录活动的onCreate方法手动设置方向:setRequestedOrientation为景观加载肖像布局

if (getResources().getBoolean(R.bool.portrait_only)) { 
      setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); 
     } else { 
      setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE); 
     } 

凡布尔值来在片中假。然而,方向改变为风景;布局文件仍然是从“layout_large”文件夹而不是“layout_large_land”文件夹中选取的。因此我的观点看起来很紧张。

我试过这个link

但它没有帮助。

任何帮助表示赞赏。

在此先感谢。

回答

1

我已经使用的文件夹像这样标签&移动

enter image description here

layout文件夹是用于移动和layout-sw720dp为标签。 720 dp是告诉720+ dp将使用该文件夹进行布局的宽度。

+0

感谢您的答复。它似乎不适合我。 –

+0

你能告诉我什么是'setContentView()'什么是你的布局文件夹中的布局文件名?对于移动设备和标签 –

0

我有同样的问题。确保您未在​​AndroidManifest中为您的活动设置android:configChanges="orientation"

我猜的问题是,setRequestedOrientation可能会触发一个方向配置更改,但是通过使用android:configChanges="orientation"此配置更改不是由系统注册。

或者,如果您想保留Manifest设置,则必须为此特定配置更改实现您自己的娱乐机制。

它可能是这个样子:

@Override 
public void onConfigurationChanged(Configuration newConfig) { 
    super.onConfigurationChanged(newConfig); 
    if(getResources().getBoolean(R.bool.portrait_only)) 
     recreate(); 
}