1

カスタム 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 回だけ変更されます。

その理由は何ですか?

4

0 に答える 0