改变方向后重绘 LinearLayout

Kei*_*ith 5 android

可能的重复:
Activity 在轮换 Android 上重新启动

我有一个 LinearLayout,我想android:orientation="vertical"在纵向模式和android:orientation="horizontal"横向模式下都使用它。Activity 执行一些复杂的操作,因此允许 Activity 在方向更改时关闭并重新启动本身不是一种选择,因此排除使用 layout-land 功能或任何其他涉及重新启动 Activity 的方法。我目前正在以编程方式设置正确android:orientation的活动onStartonConfigurationChanged.

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

基本上,这里有问题的代码有时有效,但不是其他:

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