Android方向改变

时间:2013-10-30 10:32:15

标签: android

我正在开展一个项目。我使用屏幕方向景观和肖像。我还使用android:configChanges="keyboardHidden|orientation|screenSize",以便在切换方向时不会刷新活动。

现在app无法从layout-port-> layout-land xml布局切换,因为我使用configChanges =“orientation”。

我可以从Landscape->切换纵向或纵向 - >横向,但它从两个方向显示布局端口xml,而不是从layout-port-> layout-land或land切换 布局陆地>布局端口

3 个答案:

答案 0 :(得分:0)

在您的活动中添加此内容

inside of oncreate()
if(getResources().getConfiguration().orientation ==Configuration.ORIENTATION_LANDSCAPE) 
        setContentView(R.layout.land);
else if(getResources().getConfiguration().orientation ==Configuration.ORIENTATION_PORTRAIT) 
        setContentView(R.layout.port);



@Override
public void onConfigurationChanged(Configuration config) {
    super.onConfigurationChanged(config);


    if (config.orientation == Configuration.ORIENTATION_LANDSCAPE) {
        setContentView(R.layout.land);
    } else if (config.orientation == Configuration.ORIENTATION_PORTRAIT){
        setContentView(R.layout.port);
    }
}

答案 1 :(得分:0)

在AndroidManifest文件中,仅添加android:configChanges="orientation"并删除要处理此方向的活动的其他两个

答案 2 :(得分:0)

试试这个

更改android:configChanges="keyboardHidden|orientation|screenSize"

android:configChanges="orientation"

以及您的活动,覆盖onConfigurationChanged methode

像Manivannan在回应中描述的那样

@Override
public void onConfigurationChanged(Configuration config) {
    super.onConfigurationChanged(config);


    if (config.orientation == Configuration.ORIENTATION_LANDSCAPE) {
        //set your landscape layout
    } else if (config.orientation == Configuration.ORIENTATION_PORTRAIT){
        //the same for portrait layout
    }
}

就是这样。