我阅读了其他几篇文章并使用 input.setInputType(TYPE_NUMBER_FLAG_DECIMAL);确实打开了键盘,但不是数字键盘
这有什么窍门吗?
给予
android:inputType="number"
在您的 xml 文件中
编辑:“Number”不起作用,改为“number”(小写N)
a) 在 xml 中
android:numeric="decimal"
b) 在代码中
EditText editView = new EditText(this);
editView.setKeyListener(new DigitsKeyListener());
在你的xml中,你必须这样做:
android:inputType="Number"
在您的代码中,执行以下操作:
editText.requestFocus();
然后:
InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
imm.showSoftInput(editText, InputMethodManager.SHOW_IMPLICIT);
我花了很多天才弄清楚这一点。我什至尝试过 editText.performClick();不工作。
要在活动开始时弹出数字键盘,我使用了以下步骤:
在layout中创建编辑文本字段为:
<EditText
...
android:inputType="number"
... />
在函数中onCreate()显示软键盘
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
imm.toggleSoftInput(InputMethodManager.SHOW_FORCED,0);
最重要的是在 onResume 方法中给予焦点编辑文本。
@Override
public void onResume() {
super.onResume();
editText.setFocusableInTouchMode(true);
editText.requestFocus();
}
我找到了两种简单的方法来做到这一点,将其中之一添加到 XML 文件中的 EditText 块中:
android:inputType="phone"
android:digits="1234567890"
android:inputType="number"
以下是完全以编程方式完成此操作的方法。由于您需要显示数字键盘,因此从技术上讲,您应该将
inputType
设置为 XML 布局内的 number
。但由于您没有 XML 布局,因此需要以编程方式设置相应的标志。以下是文档中关于 number
标志的说明:
<!-- A numeric only field. Corresponds to
{@link android.text.InputType#TYPE_CLASS_NUMBER} |
{@link android.text.InputType#TYPE_NUMBER_VARIATION_NORMAL}. -->
<flag name="number" value="0x00000002" />
因此,为了具有相同的行为,您需要执行以下操作:
mEditText.setInputType( InputType.TYPE_CLASS_NUMBER | InputType.TYPE_NUMBER_VARIATION_NORMAL );