小编leo*_*dzn的帖子

当没有足够的项目来填充屏幕高度时,如何强制RecyclerView滚动

我在NavigationView中创建了一个RecyclerView,其自定义的第一项与ListView的addHeaderView()相当.在该标题布局的底部,我放置了一个EditText,以便我可以过滤掉下面的列表.

我想要做的是一直向上滚动RecyclerView,直到EditText成为最上面的项目,只要EditText获得焦点.但是,如果我的项目数量足够小以至于无法填充NavigationView的整个高度,则RecyclerView会拒绝一直向上滚动,从而显示除EditText之外的更多标题.作为一个附加问题,即使列表足够大,一旦我开始过滤列表项,它仍会向下滚动.

即使我没有足够的物品来填充视图的高度,我怎么能强制我的RecyclerView仍然一直向上滚动,以便我的标题的其余部分不会偷看?

这是我想要实现的目标的可视化:

 _______________
| HEADER LINE 1 |
| HEADER LINE 2 |
| HEADER LINE 3 |
| ------------- |
|  Search box   |
| ------------- |
| List item 1   |
| List item 2   |
| List item 3   |
 ---------------
Run Code Online (Sandbox Code Playgroud)

当我专注于搜索框时的预期行为:

 _______________
| ------------- |
|  Search box   | <- becomes the topmost item. I can already achieve this
| ------------- |    with RecyclerView.smoothScrollBy(dx, dy)
| List item 1   |    except when …
Run Code Online (Sandbox Code Playgroud)

android android-layout android-recyclerview

6
推荐指数
1
解决办法
1209
查看次数