按代码编辑文本数字

时间:2012-01-20 06:38:15

标签: android android-edittext numeric

大家好。

我尝试将EditText设置为仅输入数字和点(“。”)即可。我已经在使用inputType ..但是数字键盘带有“+”,“ - ”和“#”且没有点/句点(“。”) 需要它的例子:100.99 ..就是这样。 我找到了一些代码:

<EditText android:text="100.99"
android:id="@+id/EditText01"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:numeric="integer|decimal" />

但它是在xml中...我想通过代码创建它。我的意思是这个字符串:

 android:numeric="integer|decimal"

如果有人知道如何通过代码设置此设置,请回复我

问候,彼得。

3 个答案:

答案 0 :(得分:4)

尝试使用:

mEditText.setInputType(InputType.TYPE_NUMBER_FLAG_DECIMAL);

修改:

我上面提出的建议来自Doc。但正如你所说它不能正常工作,我可以建议你更多。

在设置上述输入类型后,将TextWatcher添加到EditText中,如下所示:

mEditText.addTextChangedListener(new TextWatcher() {

    @Override
    public void onTextChanged(CharSequence arg0, int arg1, int arg2, int arg3){         

          if(arg0.length()!=0)
          {
                String s=arg0.toString();
                Character c=s.charAt(arg0.length()-1);

                if(c=='/' || c=='\\' || c=='|' || c=='"' || c==':' || c==';' || c=='?' || c=='/' || c==',' || c=='<' || c=='>' || c=='!' || c=='@' || c=='#' || c=='$' || c=='%' || c=='^' || c=='&' || c=='*' || c=='(' || c==')' || c=='_' || c=='=' || c=='+' || c=='-')
                {               
                    if(arg0.length()!=1)
                    {
                        String s1=s.substring(0,arg0.length()-1);
                        mEditText.setText(s1);
                        mEditText.setSelection(s1.length());    
                    }
                    else
                    {
                        mEditText.setText("");
                    }
                }
          }     
    }               
    @Override
    public void beforeTextChanged(CharSequence arg0, int arg1, int arg2,int arg3) {
    }               
    @Override
    public void afterTextChanged(Editable arg0) {
    }
}

答案 1 :(得分:0)

请试试这个,

// TYPE_CLASS_NUMBER:数字文本的类。这将显示数字/符号键盘。

editText.setInputType(InputType.TYPE_CLASS_NUMBER);

// TYPE_CLASS_PHONE:电话号码的类。这将显示电话号码键盘。

editText.setInputType(InputType.TYPE_CLASS_PHONE);

答案 2 :(得分:0)

实际上这有效:

editText.setInputType((InputType.TYPE_MASK_CLASS&InputType.TYPE_CLASS_NUMBER)| (InputType.TYPE_MASK_FLAGS & (InputType.TYPE_NUMBER_FLAG_SIGNED |InputType.TYPE_NUMBER_FLAG_DECIMAL)));