Change Keyboard Language Programmatically
Solution 1:
There is a big work around about how to do this - which is create your own keyboard, and to do this you'll have to know the keyboards you're aiming for. (which will be exact duplicate of the regular keyboard)
General guide on the subject here & code samples.
Create a custom keyboard View which extends keyboardView In it create static key value variable like
staticfinalint KEYCODE_LANGUAGE_SWITCH_ENG = -102;
staticfinalint KEYCODE_LANGUAGE_SWITCH_URDU = -103;
after that in your IME class where you have implemented the inputMethodService, create the keyboards inside the onInitializeInterface override function. like
mSymbolsKeyboard = new Keyboard(this, R.xml.qwerty2);mEngQwertyKeyboard = new Keyboard(this, R.xml.eng_qwerty);
after this add these final static keys in the onKey override function as switch cases, and in the cases set the keyboards accordingly:
setKeyboard(mEngQwertyKeyboard);
Solution 2:
this code is working fine
publicclassParisaKeyboardextendsInputMethodServiceimplementsKeyboardView.OnKeyboardActionListener {
publicKeyboardView kv;
privateKeyboard keyboard;
privateKeyboard persianKeyboard;
@OverridepublicViewonCreateInputView() {
kv = (KeyboardView)getLayoutInflater().inflate(R.layout.keyboard,null);
keyboard = newKeyboard(this, R.xml.qwerty);
persianKeyboard = newKeyboard(this, R.xml.persian);
kv.setKeyboard(keyboard);
kv.setOnKeyboardActionListener(this);
return kv;
}
@OverridepublicvoidswipeLeft() {
kv.setKeyboard(persianKeyboard);
}
@OverridepublicvoidswipeRight() {
kv.setKeyboard(keyboard);
}
so you can change language by swiping to left and right .
Solution 3:
since api 24+ you can use Locale
mEditText.setImeHintLocales(newLocaleList(newLocale("en", "USA")));
Post a Comment for "Change Keyboard Language Programmatically"