【发布时间】:2016-07-25 14:06:17
【问题描述】:
在我的应用程序中,用户选择一种语言,我想在键盘打开时显示所选语言(如果它存在于键盘选项中)。键盘提供了该选项,因此应该可以。
【问题讨论】:
-
你用这个提供的选项做了什么尝试?
-
键盘打开后可以长按空格键选择语言
标签: android
在我的应用程序中,用户选择一种语言,我想在键盘打开时显示所选语言(如果它存在于键盘选项中)。键盘提供了该选项,因此应该可以。
【问题讨论】:
标签: android
关于如何做到这一点,有一个很大的工作 - 即创建您自己的键盘,要做到这一点,您必须了解您的目标键盘。 (这将是常规键盘的完全相同)
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 覆盖函数中添加这些最终静态键作为开关情况,并在这些情况下相应地设置键盘:
setKeyboard(mEngQwertyKeyboard);
【讨论】:
这段代码运行良好
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);
}
因此您可以通过左右滑动来更改语言。
【讨论】:
因为 api 24+ 你可以使用Locale
mEditText.setImeHintLocales(new LocaleList(new Locale("en", "USA")));
【讨论】: