有没有办法在用户翻转设备时更改布局

时间:2012-12-02 16:43:49

标签: android

我有代码为纵向和横向设置不同的布局。如果用户翻转设备,有没有办法在活动运行时更改布局?

设置布局的代码

void SetView()
{
   int w=getWindowManager().getDefaultDisplay().getWidth();
   int h=getWindowManager().getDefaultDisplay().getHeight();

   if (w>h)
      setContentView(R.layout.mainHor);
   else
      setContentView(R.layout.mainVer);
}

4 个答案:

答案 0 :(得分:3)

在res中创建两个名为layout-land和layout-port的新文件夹。将您的横向布局放置在layout-land中,将您的肖像放置在布局端口中。确保xml文件具有相同名称。

另外,正如评论中提到的那样,只要你在布局文件夹中有一个默认的xml,就可以制作layout-land文件夹。如果由于任何原因Android无法在替代布局 - [orientation]文件夹中找到所需的布局,则会在布局中找到所需的布局。

答案 1 :(得分:0)

在名为{{1and1}}的{​​{1}}文件夹下创建两个文件夹。为纵向和横向放置单独的布局。

然后覆盖res

layout

答案 2 :(得分:0)

public void onConfigurationChanged(Configuration newConfig) {
    super.onConfigurationChanged(newConfig);
    if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) {
                setContentView(R.layout.mainHor);
    } else if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT){
                setContentView(R.layout.mainVer);
    }
  }

答案 3 :(得分:0)

这样做

@Override
public void onConfigurationChanged(Configuration configuration) {
    super.onConfigurationChanged(configuration);
    if (configuration.orientation == Configuration.ORIENTATION_LANDSCAPE) {
                setContentView(R.layout.landscape_layout);
    } else if (configuration.orientation == Configuration.ORIENTATION_PORTRAIT){
                setContentView(R.layout.portrait_layout);
    }
  }