gpt4 book ai didi

Android:以编程方式切换到不同的 IME

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:54:08 26 4
gpt4 key购买 nike

http://developer.android.com/guide/topics/text/creating-input-method.html#GeneralDesign阅读:

由于设备上可能安装了多个 IME,因此为用户提供一种直接从输入法 UI 切换到不同 IME 的方法。

假设我有两种输入法的来源并且可以修改它。我想让用户在它们之间快速切换,并准备为此保留一个按钮。我如何“直接从输入法 UI 切换到不同的 IME”?

最佳答案

从当前输入法切换到上一个输入法是:

//final String LATIN = "com.android.inputmethod.latin/.LatinIME";
// 'this' is an InputMethodService
try {
InputMethodManager imm = (InputMethodManager) this.getSystemService(Context.INPUT_METHOD_SERVICE);
final IBinder token = this.getWindow().getWindow().getAttributes().token;
//imm.setInputMethod(token, LATIN);
imm.switchToLastInputMethod(token);
} catch (Throwable t) { // java.lang.NoSuchMethodError if API_level<11
Log.e(TAG,"cannot set the previous input method:");
t.printStackTrace();
}

如果您想切换到您知道其 ID 的特定输入法,您可以按照注释掉的行建议进行操作。

编辑 @pRaNaY 在静默编辑中建议使用单个 .getWindow()(单击下面的“已编辑”以查看历史记录)。我记得它不适用于 Android 2.3;如果您查阅文档,您会看到第一个调用 InputMethodService.getWindow() 返回一个 Dialog(它不是 Window 的子类>),第二次调用 Dialog.getWindow() 返回一个 Window。没有 Dialog.getAttributes(),所以只有一个 .getWindow() 甚至无法编译。

关于Android:以编程方式切换到不同的 IME,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16684482/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com