Android 如何在EditText上显示数字键盘(简单文本键盘的选项卡)

Android 如何在EditText上显示数字键盘(简单文本键盘的选项卡),android,android-edittext,android-keypad,Android,Android Edittext,Android Keypad,我正在实现一个Android应用程序,其中我有一个EditText,我想用文本填充它。用户将输入的值如下:“12面包”、“45饮料”等。 我想让用户更容易,当他关注EditText时,我首先向他显示标准文本键盘的数字选项卡。 123“> 问题是,我希望在不强制用户先按123键的情况下执行此操作: 使用inputType=“number”或其他编程方法只会显示数字键盘,但我不能在一次单击后返回文本键盘,以便他也可以使用字符来显示值。 有人能告诉我有没有解决这个问题的办法吗?我已经搜索了又搜索

我正在实现一个Android应用程序,其中我有一个
EditText
,我想用文本填充它。用户将输入的值如下:“12面包”、“45饮料”等。 我想让用户更容易,当他关注
EditText
时,我首先向他显示标准文本键盘的数字选项卡。 123“>

问题是,我希望在不强制用户先按123键的情况下执行此操作:

使用
inputType=“number”
或其他编程方法只会显示数字键盘,但我不能在一次单击后返回文本键盘,以便他也可以使用字符来显示值。

有人能告诉我有没有解决这个问题的办法吗?我已经搜索了又搜索,没有一个Q/a与我的情况相匹配,到目前为止,没有人说这是不可能的。所以我仍然希望有一个奇迹。 上面显示的图像只是为了显示键盘的类型。

好的,这可能会起作用。在编辑文本中使用“onTextChangeListener”,这样当长度或某些确定字符串被记录时,键盘将切换。我有一个项目,我在其中执行以下操作:

yourEditText.addTextChangedListener(new TextWatcher() {

        @Override
        public void onTextChanged(CharSequence s, int start, int before, int count) {


        }

        @Override
        public void beforeTextChanged(CharSequence s, int start, int count,
                int after) {
            // TODO Auto-generated method stub

        }
        //Check after user finished writting
        @Override
        public void afterTextChanged(Editable s) {
            //if the lenght of the editText is > 3...
            if (s.length()>=3){
                yourTextView.setInputType(InputType.TYPE_CLASS_NUMBER);
                    }

                }

    });

我怀疑这是可以做到的,即使你发现了一个黑客,也有可能另一个键盘不支持它。我会考虑改变你的应用程序的输入模式,但是把数字和字母分开。如果总是有两个数字+字母,你可以使用<代码> TextWatcher <代码>从数字项前进到字母D。在
onCreate()
中尝试以下操作的id:
etTest=(EditText)findViewById(R.id.etTest);etTest.setRawInputType(InputType.TYPE\u CLASS\u编号);
?我同意323go。从数字输入类型开始,然后通过TextWatcher运行回调,检测用户输入了2个数字,然后通过编程更改键盘输入类型。@323go-我的目标是找出是否可能;值不总是相同的:我可以有“4MAIN”和“459SECOND”“。使用侦听器只会减慢treatment@ShobhitPuri,那实际上是行不通的。InputType仅在打开IME时观察到,一旦它已经可见,它实际上不会更改它。因此,我的建议仍然是——将它设置为两个相邻的输入框,第一个用于数字,第二个用于文本或字母数字,然后用户以数字模式启动,点击[下一步],然后转到常规键盘。FWIW,一个文本观察者不会放慢速度,除非它的编码很差。