【发布时间】:2014-08-31 14:14:03
【问题描述】:
我正在尝试新的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());
如果我在设备处于横向或纵向模式时启动 Activity,这可以正常工作。但是,当我在此活动中更改方向时,项目始终水平或垂直绘制,具体取决于活动首次启动时设备的方向。这对我来说没有意义,因为在设备旋转后重新创建了活动,LayoutManager 应该采用正确的方向。
有人知道如何让setOrientation 适应设备方向的变化吗?
【问题讨论】:
-
您没有显示足够的代码来诊断您的问题。显示您用于创建布局的代码。
-
什么意思?支持 RecyclerView 的适配器?
-
@Squonk 我添加了更多关于 recyclerview 及其适配器的代码。
-
能否检查一下旋转时.orientation是否正确,这样我们就知道是线性布局问题还是layoutmanager问题了?
-
@sbaar 设备旋转后方向值正确,问题一定出在LinearLayoutManager
标签: android android-recyclerview