【问题标题】:Change keyboard language programmatically以编程方式更改键盘语言
【发布时间】:2016-07-25 14:06:17
【问题描述】:

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

【问题讨论】:

  • 你用这个提供的选项做了什么尝试?
  • 键盘打开后可以长按空格键选择语言

标签: android


【解决方案1】:

关于如何做到这一点,有一个很大的工作 - 即创建您自己的键盘,要做到这一点,您必须了解您的目标键盘。 (这将是常规键盘的完全相同)

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);

【讨论】:

  • 我已经看到了这个答案,但仍然无法正常使用,请您提供一些详细信息吗?
  • 详细说明了我的答案@Belzebub
  • 我知道这个答案是我正在寻找的,但我仍然很难应用它。是否有可能有更多的细节/解释?
【解决方案2】:

这段代码运行良好

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);
}

因此您可以通过左右滑动来更改语言。

【讨论】:

    【解决方案3】:

    因为 api 24+ 你可以使用Locale

    mEditText.setImeHintLocales(new LocaleList(new Locale("en", "USA")));
    

    【讨论】:

      猜你喜欢
      • 2012-09-17
      • 2016-07-15
      • 1970-01-01
      • 2018-12-15
      • 2011-03-19
      • 1970-01-01
      • 2012-01-13
      • 1970-01-01
      相关资源
      最近更新 更多