如何根据当前屏幕方向设置活动内容?

时间:2010-07-02 18:20:29

标签: android

我只想做:

if(getRequestedOrientation() == ActivityInfo.SCREEN_ORIENTATION_PORTRAIT)
    setContentView(R.layout.search_portrait);
else
    setContentView(R.layout.search_landscape);

问题是 - getRequestedOrientation总是返回-1。

有什么建议吗?

3 个答案:

答案 0 :(得分:5)

如果您只是更改布局,您应该考虑将您的纵向布局放在/res/layout中,并将您的横向布局放在/res/layout-land中(使用相同的名称),Android会选择正确的布局自动。

答案 1 :(得分:1)

尝试将android:screenOrientation="portrait"android:screenOrientation="landscape"添加到此活动的清单中。它将是默认方向...因为getRequestedOrientation返回当前请求的活动方向。这将是其组件清单中所请求的方向,或者最后请求给定setRequestedOrientation(int)的方向。“。

答案 2 :(得分:0)

必须正常使用,

 if(getResources().getConfiguration().orientation==Configuration.ORIENTATION_LANDSCAPE)

        setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
    else
        setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);

setContentView(R.layout.main_activity);

并将landscape xml文件放在

  

/ RES /布局陆

注意:布局文件名在所有布局目录中必须相同

  • RES /布局/ activity_main
  • RES /布局脊/ activity_main