Если я хочу перехватить сенсорные события вида, я бы установил View.OnTouchListener для вида:
textView.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
break;
case MotionEvent.ACTION_MOVE:
break;
case MotionEvent.ACTION_UP:
break;
}
return true;
}
});
Возвращаемое значение onTouch должно быть true , иначе остальные события будут получены представлением onTouchEvent .Если представление не установлено OnClickListener и оно не clickable , onTouchEvent вернет false, тогда все события будут обрабатываться другими представлениями.
Таким образом, если представление не имеет OnClickListener и onTouch , возвращает false при перехвате ACTION_DOWN , оно никогда не получит ACTION_MOVE и ACTION_UP . TextView следует этой политике.
Но EditText все еще может получать другие события, хотя для него не установлено OnClickListener и onTouch всегда возвращает false.Наконец, я обнаружил, что он помечен как clickable после его создания.Таким образом, все события могут быть получены его onTouchEvent и onTouch как будет.
Я хочу знать, как EditText может быть помечен как интерактивный,Я проверяю код из EditText и понятия не имею.Пожалуйста, помогите.