RecyclerView:设置滚动位置,使项目显示在视图的底部

时间:2016-05-24 13:21:05

标签: android android-recyclerview linearlayoutmanager

我的RecyclerView LinearLayoutManager由适配器支持,其中的身高不同。有没有办法告诉RecyclerView设置滚动位置,以便项目X(或多或少)完全出现在屏幕底部?

我尝试了LinearLayoutManager.scrollToPosition(),但这会将项目置于视图的顶部。

2 个答案:

答案 0 :(得分:2)

MyAdapter mAdapter;
RecyclerView recyclerView;
List<ItemData> data = new ArrayList<>();
LinearLayoutManager llm = new LinearLayoutManager(this);

在OnCreate方法中尝试这个

recyclerView = (RecyclerView) findViewById(R.id.recycler_view);
recyclerView.setHasFixedSize(true);
recyclerView.setLayoutManager(llm);
llm.setStackFromEnd(true);
mAdapter = new MyAdapter(data, getApplication());
recyclerView.setAdapter(mAdapter);

当你插入一个项目时试试这个

mAdapter.notifyItemInserted(data.size() - 1);
llm.scrollToPosition(data.size() - 1);

答案 1 :(得分:1)

在mainActivity.class中试试这个

 rv_journey.setAdapter(ca);
            new Handler().postDelayed(new Runnable() {
                @Override
                public void run() {
                    scrollList();
                }
            }, 500);

这是我的滚动方法

private void scrollList(){
        rv_journey.post(new Runnable() {
            @Override
            public void run() {
                // Call smooth scroll
                rv_journey.smoothScrollToPosition(Index);
            }
        });
    }

从Adapter类设置索引,扩展RecyclerView.Adapter你需要滚动的地方......

if (Condition) {
                        mainActivity.Index=position+1;

                    }
                } 

快乐编码......