【问题标题】:Best way to detect editText inputType in Android?在Android中检测editText inputType的最佳方法?
【发布时间】:2016-02-09 15:29:42
【问题描述】:

我开发了一个简单的键盘。

这是一款 T9 键盘,专为配备硬件键盘的手机而设计。

当我想在标准的 EditText 中写一些东西时,我没有问题,但是当我尝试使用 android:inputType="phone"android:inputType="number" 在 ediText 中写数字时,键盘仍然会尝试写字母。

我的问题是:从我的自定义键盘中检测我关注的 editText 是否为纯数字、纯文本等的最佳和最简单的方法是什么? 如何从键盘检测 inputType?

我希望你们中的某个人过去已经解决了这个问题并且可以提供帮助……提前谢谢你们!

【问题讨论】:

    标签: android android-keypad


    【解决方案1】:

    试试这样的:

    if(txt.getInputType()==InputType.TYPE_CLASS_PHONE){
    //do something
    }
    

    还要检查这个问题:Android: Determine active input method from code 它描述了使用 InputMethodManager

    **

    另一种方法:

    **

    在开发自定义键盘时:如http://developer.android.com/guide/topics/text/creating-input-method.html#IMEUI 此处所述

    你扩展了 InputMethodService,它提供了方法 onStartInputView(EditorInfo info, boolean restarting)

    onStartInputView 具有 EditorInfo 参数,该参数具有 inputType 字段,您可以从中了解当前的编辑文本输入类型

    【讨论】:

    • 键盘是一项服务,其中没有视图(软键盘布局除外),它与第三方应用程序交互。所以我不能打电话给txt.getInputType()...我正在考虑重写一个获取 EditorInfo 或 textView 的方法...有什么建议吗?
    • 在您建议我的示例中,有一个String id 设置为Settings.Secure.getString( getContentResolver(), Settings.Secure.DEFAULT_INPUT_METHOD );,这个方法返回什么?
    • 谢谢@Mina Samy,你给了我很多信息!
    【解决方案2】:

    this page 的“处理不同的输入类型”下:

    当输入字段获得焦点并且您的 IME 启动时,系统会调用 onStartInputView(),并传入一个 EditorInfo 对象,该对象包含有关输入类型和文本字段其他属性的详细信息。在此对象中,inputType 字段包含文本字段的输入类型。

    然后继续解释如何读取输入类型以及许多输入类型(及其相关标志)的含义。

    【讨论】:

    • 这正是我所做的。在 onStartInputView() 中,如果 inputType 和 InputType.TYPE_CLASS_PHONE 条件为真,我设置 X=true...但没有运气...您有示例代码吗?也许我错过了一些非常愚蠢的东西..
    • @Ben 目前您的问题清楚地询问如何判断视图的输入类型,这就是机制。如果这不是您遇到的问题,那么您应该更新您的问题并包含一些代码。
    • 对不起@Karakuri,我现在在火车上,通常我会发布所有代码。明天我可以编辑我的问题,但我认为你对我的确认帮助很大。
    猜你喜欢
    • 2011-07-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-27
    • 1970-01-01
    • 2011-10-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多