滚动到回收站视图中下一项的顶部
Scroll to top of next item in a recyclerview
我有以下代码检测onTouch 中的滑动是向左还是向右。但我想检测 top/down。请建议我如何通过修改代码来实现代码的更改
r.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
int downX = 0,upX;
switch(event.getAction()){
case MotionEvent.ACTION_DOWN:{
downX = (int) event.getX();}
case MotionEvent.ACTION_UP:{
upX = (int) event.getX();
float deltaX = downX - upX;
Log.e("DeltaX","Dd "+deltaX);
if(Math.abs(deltaX)>0){
if(deltaX>=0){
return true;
}else{
return true;
}
}
else {
}
}
}
return false;
}
});
请不要建议任何第 3 方库或任何其他解决方案。请仅建议对上述代码进行更改。我已经尝试了很多其他的东西,但这是一个完美的选择
感谢您的回复!
这是我想出的代码
r.addOnScrollListener(new RecyclerView.OnScrollListener() {
public boolean top;
@Override
public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
super.onScrollStateChanged(recyclerView, newState);
if (top) {
int index = mLay.findFirstVisibleItemPosition();
r.smoothScrollToPosition(index);
} else {
int index = mLay.findLastVisibleItemPosition();
r.smoothScrollToPosition(index);
}
}
@Override
public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
super.onScrolled(recyclerView, dx, dy);
if (dy > 0) {
top = false;
} else {
top = true;
}
}
});
我有以下代码检测onTouch 中的滑动是向左还是向右。但我想检测 top/down。请建议我如何通过修改代码来实现代码的更改
r.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
int downX = 0,upX;
switch(event.getAction()){
case MotionEvent.ACTION_DOWN:{
downX = (int) event.getX();}
case MotionEvent.ACTION_UP:{
upX = (int) event.getX();
float deltaX = downX - upX;
Log.e("DeltaX","Dd "+deltaX);
if(Math.abs(deltaX)>0){
if(deltaX>=0){
return true;
}else{
return true;
}
}
else {
}
}
}
return false;
}
});
请不要建议任何第 3 方库或任何其他解决方案。请仅建议对上述代码进行更改。我已经尝试了很多其他的东西,但这是一个完美的选择
感谢您的回复!
这是我想出的代码
r.addOnScrollListener(new RecyclerView.OnScrollListener() {
public boolean top;
@Override
public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
super.onScrollStateChanged(recyclerView, newState);
if (top) {
int index = mLay.findFirstVisibleItemPosition();
r.smoothScrollToPosition(index);
} else {
int index = mLay.findLastVisibleItemPosition();
r.smoothScrollToPosition(index);
}
}
@Override
public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
super.onScrolled(recyclerView, dx, dy);
if (dy > 0) {
top = false;
} else {
top = true;
}
}
});