问题描述
- 如何修改 activity 中的布局
-
当方向改变时,我想让activity 不被毁坏,因此我在manifest 文件中添加:<activity android:name="MyActivity" android:configChanges="orientation|keyboard|keyboardHidden"> </activity>
现在的问题是每当方向转化成横向方式时,我如何才能使它转向一个新的布局?
在 layout-land 或者 layout-port 里加入布局文件还是不能正常运行。
解决方案
首先在清单文件加权限:<uses-permission android:name="android.permission.CHANGE_CONFIGURATION">
然后重写onConfigurationChanged()方法.
@Override
public void onConfigurationChanged(Configuration newConfig) {
// TODO Auto-generated method stub
super.onConfigurationChanged(newConfig);
if(newConfig.orientation==Configuration.ORIENTATION_LANDSCAPE){
//横向
setContentView(R.layout.main_landscape);
//重新实例化组件和设置监听
}else{
//竖向
setContentView(R.layout.main);
//重新实例化组件和设置监听
}
}
最后别忘了在onCreate()时加上判断,
if(getResources().getConfiguration().orientation ==Configuration.ORIENTATION_LANDSCAPE){
setContentView(R.layout.main_landscape);
}else {
setContentView(R.layout.main);
}
解决方案二:
如果在 /res/layout 有竖向布局 main.xml,在/res/layout-land 有横向布局main.xml,在onConfigurationChanged()中应该像这样设置:
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
setContentView(R.layout.main);
...
...
...
}
时间: 2024-10-31 21:29:28