在我的应用程序中,用户选择一种语言,我想在键盘打开时显示所选语言(如果它出现在键盘选项中)。键盘提供了该选项,因此它应该是可能的。
答案 0 :(得分:3)
关于如何做到这一点有一个很大的工作 - 创建自己的键盘,要做到这一点,你必须知道你的目标键盘。 (这将与常规键盘完全相同)
有关该主题的一般指南here& code samples。
Create a custom keyboard View 在其中创建静态键值变量,如
static final int KEYCODE_LANGUAGE_SWITCH_ENG = -102;
static final int KEYCODE_LANGUAGE_SWITCH_URDU = -103;
之后,在已实现inputMethodService的IME类中,在onInitializeInterface覆盖函数内创建键盘。像
mSymbolsKeyboard = new Keyboard(this, R.xml.qwerty2);
mEngQwertyKeyboard = new Keyboard(this, R.xml.eng_qwerty);
之后在onKey覆盖函数中添加这些最终静态键作为switch case,并在相应的情况下设置键盘:
setKeyboard(mEngQwertyKeyboard);
答案 1 :(得分:1)
此代码运行正常
public class ParisaKeyboard extends InputMethodService implements KeyboardView.OnKeyboardActionListener {
public KeyboardView kv;
private Keyboard keyboard;
private Keyboard persianKeyboard;
@Override
public View onCreateInputView() {
kv = (KeyboardView)getLayoutInflater().inflate(R.layout.keyboard,null);
keyboard = new Keyboard(this, R.xml.qwerty);
persianKeyboard = new Keyboard(this, R.xml.persian);
kv.setKeyboard(keyboard);
kv.setOnKeyboardActionListener(this);
return kv;
}
@Override
public void swipeLeft() {
kv.setKeyboard(persianKeyboard);
}
@Override
public void swipeRight() {
kv.setKeyboard(keyboard);
}
因此您可以通过左右滑动来更改语言。
答案 2 :(得分:0)
自 api 24+ 起,您可以使用 Locale
mEditText.setImeHintLocales(new LocaleList(new Locale("en", "USA")));