私はボタンのように動作するカスタムビューを持っています。私はバックグラウンドをユーザーが押したときに変更したい、ユーザーが指を外側に動かしたときに背景を元に戻す、またはそれを解放する、そしてまたonClick/onLongClickイベントを処理したい。問題は、onTouchはACTION_DOWN
に対してtrueを返す必要があるか、ACTION_UP
イベントを送信しないことです。しかし、私が真を返すと、onClick
リスナーは動作しません。onClickとonLongClickのAndroid onTouch
私はonTouchでfalseを返してonClickに登録することで解決したと思っていました。何とかうまくいきましたが、ドキュメントとはちょっと違っていました。私はちょうどボタンを長押しすることができないというメッセージをユーザーから受け取ったので、ここで何が間違っているのだろうかと思っています。現在のコードの
パート:
public boolean onTouch(View v, MotionEvent evt)
{
switch (evt.getAction())
{
case MotionEvent.ACTION_DOWN:
{
setSelection(true); // it just change the background
break;
}
case MotionEvent.ACTION_CANCEL:
case MotionEvent.ACTION_UP:
case MotionEvent.ACTION_OUTSIDE:
{
setSelection(false); // it just change the background
break;
}
}
return false;
}
public void onClick(View v)
{
// some other code here
}
public boolean onLongClick(View view)
{
// just showing a Toast here
return false;
}
// somewhere else in code
setOnTouchListener(this);
setOnClickListener(this);
setOnLongClickListener(this);
は、どのように私は彼らが正常に一緒に動作するのですか?事前