edittext的ontouchevent()如何工作?

时间:2016-06-08 12:45:41

标签: android android-edittext

我想通过将我的课程扩展到EditText来创建自定义EditText。我想覆盖自定义EditText的一些touchevents。

任何人都可以解释一下,默认EditText的默认触摸事件是如何工作的?就像我们点击EditTextMotionEvent被触发以显示键盘输入文字等。

我已阅读EditText的文档,创建自定义视图onTouchEvent(),不同的动作事件,例如ACTION_DOWNACTION_MOVE等。

我只是想知道默认EditText的工作情况。

2 个答案:

答案 0 :(得分:0)

检查Android存储库上的EditText的实现:https://github.com/android/platform_frameworks_base/blob/master/core/java/android/widget/EditText.java

看起来EditText从TextView继承onTouchEvent实现。您可以直接查看代码https://github.com/android/platform_frameworks_base/blob/master/core/java/android/widget/TextView.java#L8272

,查看其行为方式

例如,负责显示键盘的部分代码:

if (touchIsFinished && (isTextEditable() || textIsSelectable)) {
    // Show the IME, except when selecting in read-only text.
    final InputMethodManager imm = InputMethodManager.peekInstance();
    viewClicked(imm);
    if (!textIsSelectable && mEditor.mShowSoftInputOnFocus) {
        handled |= imm != null && imm.showSoftInput(this, 0);
    }

    // The above condition ensures that the mEditor is not null
    mEditor.onTouchUpEvent(event);

    handled = true;
}

答案 1 :(得分:-1)

试一试 - 覆盖您感兴趣的所有事件并显示一些日志消息(例如Log.i(TAG, "action down");