【发布时间】:2017-01-04 05:55:00
【问题描述】:
我正在尝试为我的应用程序实现某种轮子选择器,因为当前选项依赖于自定义 Views 或旧 ListView,所以我想将我的解决方案基于 RecyclerView。
到目前为止,我所做的是在 RecyclerView 的开头和结尾设置两个 View 具有不同的类型,命名为 PADDING_TYPE 以便第一个和最后一个项目在 @ 中垂直居中987654333@。
recyclerView.post(new Runnable() {
@Override
public void run() {
//80dp is the height of a regular list item
int paddingHeight = ((recyclerView.getHeight()-SettingsManager.dptopixels(80))/2);
binding.getRoot().getLayoutParams().height = paddingHeight;
}
});
现在我正在尝试了解如何使所选项目保持垂直居中。
到目前为止我尝试了什么:
1- LinearSnapHelper
LinearSnapHelper helper = new LinearSnapHelper();
helper.attachToRecyclerView(mRecyclerView);
没有按预期工作,我还尝试覆盖几种方法(可能以错误的方式),但我无法使其自动垂直居中选择。而且不够活泼,所选项目“移动”而不是锁定在垂直中心。
2- 自定义RecyclerView.OnScrollListener
我尝试通过更改 RecyclerView.OnScrollListener 这一行来调整建议的代码 here,用于水平滚动
allPixelsDate += dx;
与垂直滚动的区别:
allPixelsDate += dy;
这个实现接近于工作,因为它选择了最接近列表垂直中心的项目,但没有将其锁定在中心。
有可能达到这样的结果吗?怎么样?
更清楚地说:我希望在 1:10 达到here 显示的结果。选择被“锁定”在中心。
【问题讨论】:
-
试试这个代码以供参考link
-
我已经使用github.com/ai212983/android-spinnerwheel 完成了这项工作,我认为您在垂直方式中需要这个github.com/Jaouan/Carousel-Browsing-Example
-
你可以用这个方法在垂直这个实现[打开这个](stackoverflow.com/a/38411582/2587027)
-
@wadali 这正是我所说的,尝试第 2 次。不起作用。
-
你能定义
selected项目吗?因为在视频中,选择是使用非触摸键完成的!
标签: android android-recyclerview