在Android中,当屏幕的方向发生改变时,往往会出现布局重复的问题。这是因为屏幕方向改变后,在屏幕上绘制的布局可能发生了改变,导致原来的布局与新的布局重叠在一起。
解决这个问题的方法是,我们应该在代码中对屏幕方向的改变进行处理。下面是一个示例代码,可以帮助我们解决这个问题。
public class MainActivity extends AppCompatActivity {
private LinearLayout mLinearLayout;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mLinearLayout = (LinearLayout) findViewById(R.id.linear_layout);
}
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
// Checks the orientation of the screen
if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) {
// Do nothing
} else if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT){
mLinearLayout.requestLayout();
}
}
}
在这个代码中,我们重写了onConfigurationChanged()方法,这个方法会在屏幕方向改变时被调用。在这个方法中,我们首先检查了屏幕的方向,如果是横向的,就什么都不做;如果是竖向的,我们就使用requestLayout()方法来请求重新布局。这样就可以避免重复绘制布局的问题。