问题
I decided to create a custom keyboard for my application. I know that this is not the best idea, since it's hurting the user friendliness, that's why I will just make it optional in Preferences.
After having it all done in a class public class CustomKeyboard extends InputMethodService implements KeyboardView.OnKeyboardActionListener
. I struggle to add it as a softInputMethod
. I tried with the InputMethodManager
but I get incompatible types when casting it.
I found that I can get it w/o the Service but it is highly unrecommended and I would need a whole new implementation.
Ideally, I would use it for the EditText command line in the app. So a direct binding to it would also do the job.
After hiding the system input method, how to make this input service the default one?
Thanks.
P.S. If there is an obvious easy way to do this, I am sorry, but I just made the transition to Android and I am still learning.
回答1:
Use android:inputMethod on the text field you want to change the input method on. See https://developer.android.com/reference/android/widget/TextView.html#attr_android:inputMethod
You cannot set a default input method for the entire device, but you can override it on a field by field basis in your app. Adding a default input method for your Activity or Application's theme should override it for all text views in your app.
回答2:
how to make this input service the default one?
You don't. Input methods are for the entire device, not a single EditText
. Hence, the user needs to opt into using your input method. Quoting the documentation:
After installing the desired IMEs, a user can select which one to use from the system settings, and use it across the entire system; only one IME may be enabled at a time.
回答3:
I think you can just make a custom view that prevents default keyboard(the default InputMethodService such as SamsungKeyboard) popping up and show your own. Which you place all the keys and interact with onTouchListener.
Or if you are trying to make your own Keyboard Application such as SwiftKey, You might want to read this:(https://developer.android.com/guide/topics/text/creating-input-method.html)
来源:https://stackoverflow.com/questions/38185238/how-to-add-custom-inputmethodservice-to-activity