You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在TextView中检测键盘输入语言?

如何检测输入法语言并在TextView中显示?

嘿,这事儿不难!要实现检测当前键盘输入语言并展示在TextView里,我们可以通过监听EditText的焦点状态,结合Android的输入法服务来获取语言信息。下面是完整的可运行示例:

实现代码

// 给EditText设置焦点变化监听器
binding.etShortText.setOnFocusChangeListener(new View.OnFocusChangeListener() { 
    @Override 
    public void onFocusChange(View v, boolean hasFocus) { 
        // 当EditText获得焦点时执行检测逻辑
        if (hasFocus) { 
            String language = getKeyboardLanguage(); 
            Log.d("Keyboard Language", language); 
            // 将检测到的语言显示在目标TextView中
            binding.txtDetectLang.setText(language); 
        } 
    } 
});

// 自定义方法:获取当前输入法的语言区域
private String getKeyboardLanguage() { 
    InputMethodManager inputMethodManager = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); 
    InputMethodSubtype inputMethodSubtype = inputMethodManager.getCurrentInputMethodSubtype(); 
    // 返回当前输入法的区域代码(比如zh-CN、en-US)
    return inputMethodSubtype.getLocale(); 
}

代码逻辑说明

  • 焦点触发机制:给EditText绑定OnFocusChangeListener,当用户点击EditText唤起键盘(控件获得焦点)时,自动启动语言检测流程。
  • 输入法信息获取:通过InputMethodManager系统服务拿到当前活跃的输入法子类型,调用getLocale()就能获取对应的语言区域字符串。
  • 结果输出:把检测到的语言信息同时输出到日志和指定TextView中,方便调试和用户查看。

小提醒:这个方法获取的是当前输入法的预设语言,不是用户输入文本的实际语言哦!如果需要检测输入内容的语言,得用文本分析类的工具来实现。

内容的提问来源于stack exchange,提问作者Ram Mohan dubey

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 03:48:57