Android LinearLayoutManager设置手机旋转后的方向不工作

Android LinearLayoutManager设置手机旋转后的方向不工作,android,android-recyclerview,Android,Android Recyclerview,我正在尝试新的RecyclerView与LayoutManagerLinearLayoutManager的标准实现相结合。我的目标是让LayoutManager在设备处于纵向时水平绘制项目,在设备处于横向时垂直绘制项目。为此,我在活动的onCreate中使用以下代码: RecyclerView recyclerView = (RecyclerView) findViewById(R.id.nextColors); recyclerView.setAdapter(myAdapter = new M

我正在尝试新的
RecyclerView
LayoutManager
LinearLayoutManager的标准实现相结合。我的目标是让
LayoutManager
在设备处于纵向时水平绘制项目,在设备处于横向时垂直绘制项目。为此,我在活动的
onCreate
中使用以下代码:

RecyclerView recyclerView = (RecyclerView) findViewById(R.id.nextColors);
recyclerView.setAdapter(myAdapter = new MyAdapter(getBaseContext(), myData, myLayout);
LinearLayoutManager linearLayoutManager = new LinearLayoutManager(this);
if (getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT) {
   linearLayoutManager.setOrientation(LinearLayout.HORIZONTAL);
} else {
    linearLayoutManager.setOrientation(LinearLayout.VERTICAL);
}
recyclerView.setLayoutManager(linearLayoutManager);
recyclerView.setItemAnimator(new DefaultItemAnimator());
如果我在设备处于横向或纵向模式时启动活动,则此操作正常。但是,当我在此活动中更改方向时,项目总是水平或垂直绘制,具体取决于活动首次启动时设备的方向。这对我来说没有意义,因为在设备旋转之后,活动会被重新创建,
LayoutManager
应该采用正确的方向


有人知道如何使
setOrientation
处理设备方向更改吗?

之所以会发生这种情况,是因为您正在设置方向,然后在RecyclerView中还原保存的状态

尝试在
Activity#onPostCreate
Activity#onResume
上设置方向(换句话说,在保存的状态恢复后),以便保存的状态不会覆盖方向值

更新 从版本21开始,LLM将不会保留配置更改的方向,因此您的代码应该按原样工作。您不需要关心保存的状态


之所以进行此更改,是因为保存的状态应负责保存变量状态,而方向是一种配置,我们可以期望开发人员在每次创建时对其进行设置。

您没有显示足够的代码来诊断您的问题。显示用于创建布局的代码。你是什么意思?支持RecyclerView的适配器?@Squonk我添加了更多关于RecyclerView及其适配器的代码。您可以检查旋转时的方向是否正确,以便我们知道这是线性布局问题还是布局管理器问题?@sbaar设备旋转后的方向值正确,问题一定在LinearLayoutManager中