2 csh 34 csh_34 于 2013.03.20 13:58 提问

如何修改 activity 中的布局

当方向改变时,我想让activity 不被毁坏,因此我在manifest 文件中添加:

<activity
          android:name="MyActivity"
          android:configChanges="orientation|keyboard|keyboardHidden">
 </activity>

现在的问题是每当方向转化成横向方式时,我如何才能使它转向一个新的布局?
在 layout-land 或者 layout-port 里加入布局文件还是不能正常运行。

2个回答

s_STEFANIE_s
s_STEFANIE_s   2013.03.20 17:02
已采纳

首先在清单文件加权限:<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);
}
LiDaming_and
LiDaming_and   2013.03.27 16:30

如果在 /res/layout 有竖向布局 main.xml,在/res/layout-land 有横向布局main.xml,在onConfigurationChanged()中应该像这样设置:

public void onConfigurationChanged(Configuration newConfig) {
            super.onConfigurationChanged(newConfig);                
            setContentView(R.layout.main);
    ...
    ...
    ...
   }
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!