8
我有一個自定義視圖,就像一個按鈕。我想在用戶按下時更改背景,當用戶將手指移動到外部或釋放背景時將背景恢復爲原始,並且我還想處理onClick/onLongClick事件。問題是onTouch要求我爲ACTION_DOWN
返回true,否則它不會發送給我ACTION_UP
事件。但是,如果我返回true,那麼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);
如何讓他們一起正常工作?提前