我将片段从一个视图切换到下一个视图然后切换方向。视图不会更新到新的方向。
fm.beginTransaction()
.remove(mCallBellsFragment)
.commit();
fm.executePendingTransactions();
fm.beginTransaction()
.replace(R.id.bed_mode_plan_of_care_fragment_container, mCallBellsFragment)
.commit();
mCallBellsFragment.toggleOrientation(LinearLayout.HORIZONTAL);
...
public void toggleOrientation(int requestedOrientation) {
Log.d("AFL", "Current Orientation: " + (LinearLayout.HORIZONTAL == requestedOrientation ? "Horizontal" : "VERTICAL"));
mCallButtonLayout.setOrientation(requestedOrientation);
Log.d("AFL", "Set Orientation: " + (mCallButtonLayout.getOrientation() == LinearLayout.HORIZONTAL ? "HORIZONTAL" : "VERTICAL"));
}
日志:
D / AFL:当前方向:水平
D / AFL:设置方向:HORIZONTAL
然而,方向在屏幕上保持垂直。
答案 0 :(得分:0)
需要重新绘制布局以便以不同方式显示。
尝试在重置方向后调用invalidate()。
mCallButtonLayout.invalidate()
答案 1 :(得分:0)
按照@Eric Liu的建议尝试invalidate()
方法,但首先尝试通过调用requestFocus()
来关注所述视图。
如果这不起作用。尝试invalidate()
布局的根视图。
此外,这可能会有所帮助,使用以下命令在UI线程上运行所有内容:
runOnUiThread(new Runnable() {
@Override
public void run() {
//Call methods here
}
});