Neo*_*rge 5 android android-recyclerview recyclerview-layout
我扩展了 recyclerview,所以我可以扩展它。它以我想要的方式工作,但现在我想以编程方式滚动 x 像素。对此的用户故事是,如果我点击屏幕的上半部分,它应该滚动 x 像素量,同样会滚动到屏幕的下半部分。
这是我所做的:
活动:
@Override
public boolean dispatchTouchEvent(MotionEvent event)
{
// if(mComicViewerFragment != null)
// mComicViewerFragment.consumeEvent(event);
mScaleDetector.onTouchEvent(event);
if(event.getAction() == MotionEvent.ACTION_DOWN)
{
int y = (int) event.getY();
if(y >= mScreenSize.y / 2)
{
mComicViewerFragment.scrollBy((int)(mScreenSize.y * 0.10f));
Log.i(ComicApplication.TAG, "ComicViewerActivity.onTouchEvent : You are tapping the lower part : " + y);
}
else
{
mComicViewerFragment.scrollBy((int)(-mScreenSize.y * 0.10f));
Log.i(ComicApplication.TAG, "ComicViewerActivity.onTouchEvent : You are tapping the upper part : " + y);
}
}
return super.dispatchTouchEvent(event);
}
Run Code Online (Sandbox Code Playgroud)
分段
public void scrollBy(int by)
{
mScalingRecyclerView.smoothScrollBy(0, by);
}
Run Code Online (Sandbox Code Playgroud)
每次我点击时,它都不会滚动 x 像素。这是因为我创建了一个从 RecyclerView 扩展的自定义视图吗?我应该在哪里正确调用smoothScrollBy?这应该很容易,但我被卡住了。
由于recyclerView.smoothScrollBy(0, pixels);不适用于您的自定义视图,您可以尝试另一种方法。
你可以做的是通过做一些数学来按位置滚动,但它不会精确到像素。
假设您的项目的高度为 100dp,您可以通过代码将 dp 转换为任何屏幕类型的像素,请参见此处
假设每个项目 100dp 变为 100px,并且您想将 Recycler 向下滚动 400px。那是 4 个位置 (400 / 100)。
您所需要的只是当前查看底部项目位置编号,添加 4 并按位置滚动或平滑滚动。
这是一个帮助类,向您展示如果您希望在 Recycler 上上下移动,如何在 View 中获取顶部或底部项目位置。
有关完整的解决方案,请在此处查看
| 归档时间: |
|
| 查看次数: |
6511 次 |
| 最近记录: |