如何在运行时更改布局?

时间:2013-03-27 13:50:18

标签: android android-layout landscape

我有一个线性布局,包含一个按钮,一个gridview和一个在xml文件中设置的textview。当屏幕处于纵向时,所有这些元素都显示得很好。但是,当我将屏幕方向更改为横向时,文本视图会消失。我想改变配置更改的布局。我想以一种每个占据屏幕一定百分比的方式水平显示元素。我还必须更改gridview中每行显示的项目数,以及其他一些参数。到现在为止,我有这个,但我不知道如何更改其余的参数。

@Override
public void onConfigurationChanged(Configuration newConfig) {
    super.onConfigurationChanged(newConfig);
    LinearLayout linearlayout= (LinearLayout) findViewById(R.id.LinearLayout02);
    GridView gridview=(GridView) findViewById(R.id.gridview);
    if(newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE){           
       linearlayout.setOrientation(LinearLayout.HORIZONTAL);     
    }
    else if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT) {
        linearlayout.setOrientation(LinearLayout.VERTICAL);         
    }
}

1 个答案:

答案 0 :(得分:3)

您需要在/ res /目录中创建一个名为layout-land的文件夹,然后在该文件夹中创建一个与其他布局同名的新布局xml并放置项目(TextView等等。当设备处于风景中时你想要它们,从那里Android将负责其余部分。

编辑:使用以下代码:

@Override
public void onConfigurationChanged(Configuration newConfig) {
     super.onConfigurationChanged(newConfig);
     setContentView(R.layout.my_main_layout);

     //save your text from textviews, edittexts, etc. in temp variables

     InitializeUI(); //take your findViewById stuff out of onCreate and put it in its own method that can be called here as well.

     //set you textviews, etc back to previous values from temp vars

 }

应该这样做。