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