Search code examples
androidandroid-activityandroid-serviceandroid-input-methodwindow-soft-input-mode

How to add custom InputMethodService to Activity?


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.


Solution

  • 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.