实现默认 Android 软键盘的 类 是什么?
What are the classes that implement the default Android soft keyboards?
实现默认 Android 软键盘的 类 是什么,当您使用 android:inputType="text"
或其他可能的 [= 值定义 EditText
时得到的软键盘21=]?
(我想看看这些 类 是如何工作的,为它们引入一些额外的功能。)
我发现键盘不是我的Activity
的一部分,而且键盘的OnTouch事件不经过Activity.dispatchTouchEvent(..)
。
这与 the documentation 一致,表示键盘 运行 在服务中,显然意味着它 运行 在不同的线程中并且不属于 Activity
包含 EditText
元素等。
还说这个服务是由InputMethodService
实现的。
我希望通过在各个地方InputMethodService
设置断点找到这些类,包括它的onCreate(..)
方法。 None 个断点已命中。
所以我找不到这些 类。
有什么帮助吗?
谢谢
InputMethodService 是所有软键盘的基础class。但是没有默认的软键盘。每一个都是自己完全独立的应用程序。每个 OEM 独立决定使用哪个应用程序。
这就是您的断点失败的原因 - 因为断点需要放在不同的应用程序(键盘应用程序)中。在 EditableInputConnection 中放置断点会更幸运,它是 TextView 和 EditView 两个应用程序之间的通信桥梁的实现。
如果您有兴趣查看代码,请查看 https://android.googlesource.com/platform/packages/inputmethods/LatinIME/+/refs/heads/master That's Google's basic keyboard. It can show you how things work, but IIRC it isn't written for readability. Of course its been 8 years since I've written a keyboard, maybe its gotten better. The direct link to the InputMethodService is https://android.googlesource.com/platform/packages/inputmethods/LatinIME/+/refs/heads/master/java/src/com/android/inputmethod/latin/LatinIME.java
实现默认 Android 软键盘的 类 是什么,当您使用 android:inputType="text"
或其他可能的 [= 值定义 EditText
时得到的软键盘21=]?
(我想看看这些 类 是如何工作的,为它们引入一些额外的功能。)
我发现键盘不是我的Activity
的一部分,而且键盘的OnTouch事件不经过Activity.dispatchTouchEvent(..)
。
这与 the documentation 一致,表示键盘 运行 在服务中,显然意味着它 运行 在不同的线程中并且不属于 Activity
包含 EditText
元素等。
还说这个服务是由InputMethodService
实现的。
我希望通过在各个地方InputMethodService
设置断点找到这些类,包括它的onCreate(..)
方法。 None 个断点已命中。
所以我找不到这些 类。
有什么帮助吗?
谢谢
InputMethodService 是所有软键盘的基础class。但是没有默认的软键盘。每一个都是自己完全独立的应用程序。每个 OEM 独立决定使用哪个应用程序。
这就是您的断点失败的原因 - 因为断点需要放在不同的应用程序(键盘应用程序)中。在 EditableInputConnection 中放置断点会更幸运,它是 TextView 和 EditView 两个应用程序之间的通信桥梁的实现。
如果您有兴趣查看代码,请查看 https://android.googlesource.com/platform/packages/inputmethods/LatinIME/+/refs/heads/master That's Google's basic keyboard. It can show you how things work, but IIRC it isn't written for readability. Of course its been 8 years since I've written a keyboard, maybe its gotten better. The direct link to the InputMethodService is https://android.googlesource.com/platform/packages/inputmethods/LatinIME/+/refs/heads/master/java/src/com/android/inputmethod/latin/LatinIME.java