繁体   English   中英

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

[英]Android How to show numeric softkeyboard with EditText of InputType=“text”

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

将以下内容放在xml中所需的edittext中

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

请参阅如何在android的EditText上显示数字键盘?

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

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

使用此代码显示软键盘。

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

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

您有3个选项可以解决此问题:

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

我相信第一种选择将是最好的处理和管理方式。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM