两种方式可以监听。
一、通过OnScrollListener
lv_more_skin.setOnScrollListener(new AbsListView.OnScrollListener() {
@Override
public void onScrollStateChanged(AbsListView view, int scrollState) {
}
@Override
public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
if(lv_more_skin.getChildCount()>0)
{
boolean isScrollToUp = false;
View childAt = lv_more_skin.getChildAt(firstVisibleItem);
int[] location = new int[2];
childAt.getLocationOnScreen(location);
// Log.d("onScroll", "firstVisibleItem= "+firstVisibleItem+" , y="+location[1]);
if(firstVisibleItem!=mListViewFirstItem)
{
if(firstVisibleItem>mListViewFirstItem)
{
// Log.e("--->", "向上滑动");
isScrollToUp = true;
}else{
// Log.e("--->", "向下滑动");
isScrollToUp = false;
}
mListViewFirstItem = firstVisibleItem;
mScreenY = location[1];
}else{
if(mScreenY>location[1])
{
// Log.i("--->", "->向上滑动");
isScrollToUp = true;
}
else if(mScreenY<location[1])
{
//Log.i("--->", "->向下滑动");
isScrollToUp = false;
}
mScreenY = location[1];
}
if(isScrollToUp)
{
KeyboardUtils.hideKeyboard();
}
}
}
});
二、通过OnTouchListener
lv_more_skin.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
int action = event.getAction();
switch (action) {
case MotionEvent.ACTION_DOWN:
KeyboardUtils.hideKeyboard();
break;
case MotionEvent.ACTION_MOVE:
break;
case MotionEvent.ACTION_UP:
KeyboardUtils.hideKeyboard();
break;
}
return false;
}
});