Vek*_*r88 9 android android-recyclerview
我正在尝试为我的应用程序实现某种轮选择器,因为当前的选项依赖于自定义Views或旧的ListView,所以我想基于我的解决方案RecyclerView.
我所做的到现在为止是在开始和结束时设定RecyclerView 2 View与不同类型,命名PADDING_TYPE 以使第一和最后一个项目的垂直居中RecyclerView.
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;
}
});
Run Code Online (Sandbox Code Playgroud)
现在我试图了解如何使所选项目保持垂直居中.
到目前为止我尝试了什么:
1- LinearSnapHelper
LinearSnapHelper helper = new LinearSnapHelper();
helper.attachToRecyclerView(mRecyclerView);
Run Code Online (Sandbox Code Playgroud)
没有按预期工作,我也尝试覆盖几种方法(可能是以错误的方式),但我无法使其自动垂直居中选择.并且它不够活泼,所选项目"移动"而不是被锁定到垂直中心.
2-自定义 RecyclerView.OnScrollListener
我尝试通过更改 此行来调整此处提出的代码,即用于水平滚动RecyclerView.OnScrollListener
allPixelsDate += dx;
Run Code Online (Sandbox Code Playgroud)
与垂直滚动差异:
allPixelsDate += dy;
Run Code Online (Sandbox Code Playgroud)
此实现接近工作,因为它选择最接近列表垂直中心的项目,但不将其锁定到中心.
是否有可能实现这样的结果?怎么样?
更清楚一点:我想在1:10 得到这里显示的结果.选择被"锁定"在中心.
lob*_*zik 10
您只需要在RecyclerView上使用LinearSnapHelper和setOnFlingListener(snapHelper)方法.
这是一个有效的例子:
LinearSnapHelper snapHelper = new LinearSnapHelper();
snapHelper.attachToRecyclerView(recyclerView);
recyclerView.setLayoutManager(new LinearLayoutManager(getContext()));
recyclerView.setOnFlingListener(snapHelper);
Run Code Online (Sandbox Code Playgroud)
要获得真正的车轮选择器,您还需要为车轮添加一些外观,并准确计算RecyclerView的行高和高度.例如,如果要在车轮中仅显示3行,则需要RecyclerView高度比行高大3倍.
| 归档时间: |
|
| 查看次数: |
4227 次 |
| 最近记录: |