Android 按代码编辑文本数字

Android 按代码编辑文本数字,android,android-edittext,numeric,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_c

大家好

我尝试将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" />
请确认是否有人知道如何通过代码设置此设置。。回答我

你好,彼得。

请试试这个

//键入\类别\编号:数字文本的类别。这将在键盘上显示数字/符号

editText.setInputType(InputType.TYPE_CLASS_NUMBER);
//键入\u CLASS\u PHONE:CLASS以输入电话号码。这将显示电话号码键盘

editText.setInputType(InputType.TYPE_CLASS_PHONE);
请试试这个

//键入\类别\编号:数字文本的类别。这将在键盘上显示数字/符号

editText.setInputType(InputType.TYPE_CLASS_NUMBER);
//键入\u CLASS\u PHONE:CLASS以输入电话号码。这将显示电话号码键盘

editText.setInputType(InputType.TYPE_CLASS_PHONE);
尝试使用:

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) {
    }
}
mEditText.addTextChangedListener(新的TextWatcher(){
@凌驾
public void onTextChanged(字符序列arg0、int arg1、int arg2、int arg3){
如果(arg0.length()!=0)
{
字符串s=arg0.toString();
字符c=s.charAt(arg0.length()-1);
“如果(c==,,,,如果(c==,,,,,,,,,如果如果如果(c=,,,,,,)如果如果(c=,,,如果如果如果如果如果(c==,,,,,)如果如果如果如果如果如果(c=,,,,,,,,,,,,如果如果如果如果如果如果如果如果如果(c=,,,如果如果如果如果c=,,,,,,,,,,,,,,,,,,,,,,如果如果如果如果,,,,,,)c==,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,如果如果如果如果将将将将将,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,='^'| | c='&'| | c='*'| | c='('| | c=')'| | c='='| | c='+'| | c='-')
{               
如果(arg0.length()!=1)
{
字符串s1=s.substring(0,arg0.length()-1);
mEditText.setText(s1);
mEditText.setSelection(s1.length());
}
其他的
{
mEditText.setText(“”);
}
}
}     
}               
@凌驾
更改前的公共void(字符序列arg0、int arg1、int arg2、int arg3){
}               
@凌驾
public void PostTextChanged(可编辑arg0){
}
}
尝试使用:

mEditText.setInputType(InputType.TYPE_NUMBER_FLAG_DECIMAL);
编辑:

我上面给出的建议是从医生那里得到的。但正如你所说的,它不能正常工作,我可以给你一个更多的建议

设置上述输入类型后,将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) {
    }
}
mEditText.addTextChangedListener(新的TextWatcher(){
@凌驾
public void onTextChanged(字符序列arg0、int arg1、int arg2、int arg3){
如果(arg0.length()!=0)
{
字符串s=arg0.toString();
字符c=s.charAt(arg0.length()-1);
“如果(c==,,,,如果(c==,,,,,,,,,如果如果如果(c=,,,,,,)如果如果(c=,,,如果如果如果如果如果(c==,,,,,)如果如果如果如果如果如果(c=,,,,,,,,,,,,如果如果如果如果如果如果如果如果如果(c=,,,如果如果如果如果c=,,,,,,,,,,,,,,,,,,,,,,如果如果如果如果,,,,,,)c==,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,如果如果如果如果将将将将将,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,='^'| | c='&'| | c='*'| | c='('| | c=')'| | c='='| | c='+'| | c='-')
{               
如果(arg0.length()!=1)
{
字符串s1=s.substring(0,arg0.length()-1);
mEditText.setText(s1);
mEditText.setSelection(s1.length());
}
其他的
{
mEditText.setText(“”);
}
}
}     
}               
@凌驾
更改前的公共void(字符序列arg0、int arg1、int arg2、int arg3){
}               
@凌驾
public void PostTextChanged(可编辑arg0){
}
}
实际上这是可行的:

editText.setInputType((InputType.TYPE_MASK_CLASS&InputType.TYPE_CLASS_NUMBER)| (InputType.TYPE_MASK_FLAGS & (InputType.TYPE_NUMBER_FLAG_SIGNED |InputType.TYPE_NUMBER_FLAG_DECIMAL))); 
实际上,这是可行的:

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

我可以输入“+”和“-”。我已经试过了,这对我没有帮助:(我可以输入“+”和“-”。我已经试过了,这对我没有帮助:(然后只使用十进制,不包括数字,所以试试这个:mEditText.setInputType(InputType.TYPE\u number\u FLAG\u decimal);请查看我的编辑!这对我很有效。此外,您可以删除xml中输入类型的规范,每次都使用代码设置!xml这只是我找到的示例。.我需要创建此文件而不使用xml。仅此而已。我还尝试了您的代码(不使用xml文件)这不起作用。在编辑代码后尝试清理和重建project?请发布动态生成edittext并设置其属性的完整代码。让我们只使用decimal,不包括数字,所以请尝试以下操作:mEditText.setInputType(InputType.TYPE\u number\u FLAG\u decimal);请查看我的编辑!这对我很有效。此外,您可以删除xml中输入类型的规范,每次都使用代码设置!xml这只是我找到的示例。.我需要创建此文件而不使用xml。仅此而已。我还尝试了您的代码(不使用xml文件)这不起作用。在编辑代码后尝试清理和重建project?请发布动态生成edittext并设置其属性的完整代码。您的意思是,编辑文本必须只接受实值吗?仅接受数字和点(句点“)。仅此而已。。不输入诸如“+”、“-”之类的单词或符号或者除句号(“.”)以外的其他字符。我认为你必须根据自己的要求创建一个新的键盘,并维护它以编辑文本。如果你不知道如何操作,请问我。@Yugandhar Babu我也在考虑。但这需要很多时间。如果你告诉我如何操作,那将非常酷。我只有一个快速回答的scype:(请澄清这一点,当您按下相应的按钮时,您得到的edittext值是123+-345?还是使用您在此处发布的代码仅得到123345?您的意思是,编辑文本必须只接受实数?仅接受数字和点(句号“)。仅此而已..除句号(“.”)外,不输入“+”、“-”或其他单词或符号我想你必须为你的要求创造一个新的键盘