更改方向后重绘LinearLayout

时间:2011-04-26 21:37:06

标签: android

  

可能重复:
  Activity restart on rotation Android

我有一个LinearLayout,我想在纵向模式下android:orientation="vertical",在横向模式下android:orientation="horizontal"。活动执行一些复杂的操作,因此允许活动关闭并在方向更改时重新启动它不是一个选项,因此使用布局 - 土地功能或任何其他涉及重新启动活动的规则来排除。我目前正在以编程方式在活动android:orientationonStart中设置正确的onConfigurationChanged

不幸的是,在旋转屏幕时,只有大约20%的时间会实际更改布局。我无法接受一种模式 - 它似乎有时会这样做,而有时它却没有。我在执行更改后尝试在LinearLayout上调用.invalidate(),但这似乎不起作用。如何强制视图使用新方向重绘,或者有更好的方法来实现此目的?

基本上,这里的代码有时会起作用,而不是其他代码:

@Override
public void onConfigurationChanged(Configuration newConfig) {
    ((LinearLayout)contentView.findViewById(R.id.someLinearLayout))
        .setOrientation(newConfig.orientation==Configuration.ORIENTATION_PORTRAIT ? 
                LinearLayout.VERTICAL
                : LinearLayout.HORIZONTAL);
}

0 个答案:

没有答案