我有一个由自定义 BaseAdapter 填充的 ListView。我的自定义 BaseAdapter 中的 getView 方法只返回一个扩展 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 方法只会在我释放并重新触摸屏幕时被调用一次,因为我现在只得到一个数字我的日志和我的自定义视图也只调整了一次。
任何想法是什么原因?