カスタム 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-method (これは必要です) を呼び出したいとすぐに、onTouch-method は、画面を離して再タッチしたときに 1 回だけ呼び出されるようです。ログとカスタム ビューのサイズも 1 回だけ変更されます。
その理由は何ですか?