我有一个由自定义BaseAdapter填充的ListView。 我的自定义BaseAdapter中的getView方法只返回一个自定义View,它扩展了RelativeLayout。
现在我希望每当我触摸ListView项目时,此项目的高度设置为TouchEvent的Y位置(或其他内容,但这不是问题)。
所以我在自定义视图中设置OnTouchListener:
ViewGroup.OnTouchListener listener = new ViewGroup.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
switch(event.getActionMasked())
{
case MotionEvent.ACTION_DOWN:
{
break;
}
case MotionEvent.ACTION_MOVE:
{
Log.e("ontouchListener: ",((Float)event.getRawY()).toString() + "\n");
AbsListView.LayoutParams params =(AbsListView.LayoutParams)getLayoutParams();
params.height =(int)event.getRawY();//(int)(startedHeight + (startedY - event.getRawY()));
//setLayoutParams(params);
break;
}
case MotionEvent.ACTION_UP:
{
break;
}
}
return true;
}
};
所以一切都很好。在我的日志中,我看到大量的数字在流失。 但是,只要我想调用setLayoutParams方法(这是必要的),似乎onTouch方法只被调用一次,然后当我释放并重新触摸屏幕时,因为我现在只得到一个我的日志中的数字和我的自定义视图也只调整一次。
任何想法是什么原因?