LinearLayoutManager setReverseLayout()== true,但项目从底部堆叠

这似乎是一个简单的解决scheme,但似乎设置

private RecyclerView mRecyclerView; private RecyclerView.Adapter mAdapter; private LinearLayoutManager mLayoutManager; .... // More code mRecyclerView = (RecyclerView) rootView.findViewById(R.id.recycler_view); // Add item decoration mRecyclerView.addItemDecoration(new SpacesItemDecoration(DIVIDER_SPACE)); // use this setting to improve performance if you know that changes // in content do not change the layout size of the RecyclerView mRecyclerView.setHasFixedSize(true); // use a linear layout manager mLayoutManager = new LinearLayoutManager(getActivity()); mLayoutManager.setReverseLayout(true); // THIS ALSO SETS setStackFromBottom to true mRecyclerView.setLayoutManager(mLayoutManager); 

似乎也设置项目从底部堆叠

我试图将setStackFromBottom设置为false,但没有做任何事情,最好的方式来颠倒项目顺序,但仍然从顶部填充? 我应该使用自定义比较类吗? 我希望这会比创build另一个class级更容易。

Solutions Collecting From Web of "LinearLayoutManager setReverseLayout()== true,但项目从底部堆叠"

来自setReverseLayout的文档

用于反转项目遍历和布局顺序。 这与RTL视图的布局更改类似。 当设置为true时,第一项布置在UI的末尾,第二项布置在之前等等。对于水平布局,取决于布局方向。 当设置为true时,如果RecyclerView是LTR,比从RTL布局,如果RecyclerView}是RTL,它将从LTR布局。 如果您正在查找与setStackFromBottom(boolean)完全相同的行为,请使用setStackFromEnd(boolean)

因此,请尝试在LinearLayoutManager实例上使用setStackFromEnd(boolean)

 LinearLayoutManager mLayoutManager = new LinearLayoutManager(getActivity()); mLayoutManager.setReverseLayout(true); mLayoutManager.setStackFromEnd(true); 

接受的答案效果很好,我经历了一个艰难的工作,因为我得到can not resolve method setReverseLayout错误。

然后在寻找解决scheme后,我发现那里有一个愚蠢的错误。 我使用RecyclerView.LayoutManager而不是LinearLayoutManager

所以我想摆脱这里的混乱,我需要把它作为一个答案。

不要使用RecyclerView.LayoutManager而不是LinerarLayoutManager

 // Declare your RecyclerView and the LinearLayoutManager like this private RecyclerView mRecyclerView; private LinearLayoutManager mLayoutManager; 

 // Now set the properties of the LinearLayoutManager mLayoutManager = new LinearLayoutManager(MainActivity.this); mLayoutManager.setReverseLayout(true); mLayoutManager.setStackFromEnd(true); // And now set it to the RecyclerView mRecyclerView.setLayoutManager(mLayoutManager); mRecyclerView.setAdapter(yourAdapter);