【问题标题】:Android How to show numeric softkeyboard with EditText of InputType="text"Android 如何使用 InputType="text" 的 EditText 显示数字软键盘
【发布时间】:2012-02-26 01:57:11
【问题描述】:

我需要允许用户在 EditText 中输入数字信息,但输出的格式需要像“##.###,##”([0..9] 中的#)。我在 TextWatcher 中进行的格式设置......这很好,TextWatcher 完成了这项工作......但是,当用户选择 EditText 时,它标记为文本,如果我选择 EditText 作为数字,则会显示 AlphaKeyboard显示我需要的键盘并且 TextWatcher 停止工作。

【问题讨论】:

    标签: android android-edittext soft-keyboard


    【解决方案1】:

    将以下内容放入您的 xml 中所需的编辑文本中

    <EditText android:inputType="number" ... />
    

    参考 How do I show the number keyboard on an EditText in android?

    【讨论】:

      【解决方案2】:

      您需要像这样更改 edittext 条目。

      <EditText android:inputType="phone" android:numeric="decimal"></EditText> 
      

      【讨论】:

        【解决方案3】:

        使用此代码显示软键盘。

         InputMethodManager imm = (InputMethodManager) getSystemService(
                Context.INPUT_METHOD_SERVICE);
          imm.showSoftInputFromInputMethod(v.getApplicationWindowToken(), 1);
        

        【讨论】:

          【解决方案4】:

          当您在 TextWatcher (##,####....) 中进行格式化时,即在 EditText 中添加“,”并且您已将 EditText 设为数字。如果其为数字,则“,”字符无效。因此,它不允许 TextWatcher 更新包含“,”的格式化文本。

          你有 3 个选项来处理这个问题:

          1. 使 EditText 正常而不是数字。在 TextWatcher 中寻找除 0-9 之外的任何其他无效字符。当焦点位于 EditText 上时,您可以为 Mumber 键盘显示 IME。
          2. 为 EditText 使用掩码。
          3. 让它成为数字。为 EditText 捕获 FocusGain 和 FocusLost。在 focusGain 中,删除格式并将 inputType 设置为 Numeric。 & 在 focusLost 中,首先将输入类型设置为 Normal,然后将输入的值更新为格式化值。您可以在运行时使用setInputType(InputType.TYPE_TEXT_VARIATION_NORMAL); 将输入类型设置为正常,对于数字使用:setInputType(InputType.TYPE_NUMBER_FLAG_DECIMAL);

          我相信第一个选项将是最好的处理和管理。

          【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2016-12-09
          • 1970-01-01
          • 2011-07-31
          • 1970-01-01
          • 2010-11-10
          • 2011-07-25
          • 1970-01-01
          相关资源
          最近更新 更多