我有一个线性布局,包含一个按钮,一个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);
}
}
答案 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
}
应该这样做。