以编程方式更改键盘语言

时间:2016-07-25 14:06:17

标签: android

在我的应用程序中,用户选择一种语言,我想在键盘打开时显示所选语言(如果它出现在键盘选项中)。键盘提供了该选项,因此它应该是可能的。

3 个答案:

答案 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")));