Android 如何使用 InputType=“text”的 EditText 显示数字软键盘

发布于 2025-01-02 18:07:20 字数 218 浏览 1 评论 0原文

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

I need allow to user input numeric information in a EditText, but the output needs to be formatted like "##.###,##" (# in [0..9]). The formatting I was made in a TextWatcher... this is good, the TextWatcher does the job... bute, when user selects the EditText, as it marked as text, the AlphaKeyboard is shown, if I select the EditText as numeric the keyboard I need is shown and the TextWatcher stop working.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

话少心凉 2025-01-09 18:07:21

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

您有 3 个选项来处理此问题:

  1. 使 EditText 正常而不是数字。在 TextWatcher 中,请注意除 0-9 之外的任何其他无效字符。 可以显示 Mumber 键盘。
  2. 当焦点位于 EditText 上时,
  3. 将其设置为数字。在 focusGain 中删除格式。 & 将 inputType 设置为 Numeric。 在 focusLost 中,首先将输入类型设置为 Normal,然后将输入的值更新为格式化值。您可以使用 setInputType(InputType.TYPE_TEXT_VARIATION_NORMAL) 将输入类型设置为正常。 ; & 用于数字用途: setInputType(InputType.TYPE_NUMBER_FLAG_DECIMAL);

我相信第一个选项会最好能够处理和管理出来。

As you are doing formatting in TextWatcher (##,####....) i.e. you are adding "," in EditText and you have made the EditText as numeric. If its numeric then "," char is invalid. Thus its not allowing TextWatcher to update the formatted text that contains ',".

You have 3 options to deal with this problem :

  1. Make the EditText as normal instead of numeric. In TextWatcher look out for any other invalid chars other than 0-9. You can show IME for Mumber keypad when the focus is on the EditText.
  2. Use Mask for EditText.
  3. Let it be numeric. Trap FocusGain & FocusLost for the EditText. In focusGain, remove the formatting & set the inputType to Numeric. & In focusLost, first make the input type to Normal and then update the entered value to formmated value. You can set the input type to normal at runtime using setInputType(InputType.TYPE_TEXT_VARIATION_NORMAL); & for numeric use : setInputType(InputType.TYPE_NUMBER_FLAG_DECIMAL);

I believe 1st option will be best to handle and manage out.

孤君无依 2025-01-09 18:07:20

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

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

请参阅
如何在android 中的 EditText?

put the following in your xml at the required edittext

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

refer to
How do I show the number keyboard on an EditText in android?

迎风吟唱 2025-01-09 18:07:20

您需要像这样更改编辑文本条目。

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

You need to change edittext entry like this.

<EditText android:inputType="phone" android:numeric="decimal"></EditText> 
红颜悴 2025-01-09 18:07:20

使用此代码显示软键盘。

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

Use this code to show soft keypad.

 InputMethodManager imm = (InputMethodManager) getSystemService(
        Context.INPUT_METHOD_SERVICE);
  imm.showSoftInputFromInputMethod(v.getApplicationWindowToken(), 1);
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文