我有代码为纵向和横向设置不同的布局。如果用户翻转设备,有没有办法在活动运行时更改布局?
设置布局的代码
void SetView()
{
int w=getWindowManager().getDefaultDisplay().getWidth();
int h=getWindowManager().getDefaultDisplay().getHeight();
if (w>h)
setContentView(R.layout.mainHor);
else
setContentView(R.layout.mainVer);
}
答案 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);
}
}