android - 在 Android 中添加输入约束来编辑文本?

标签 android text android-edittext edit

我的情况是需要在应用程序中输入一些数值。

案例:

  1. 如果用户输入整数,则最大长度应为 8 位数字。例如:12345678

  2. 如果用户想输入小数,最多只能输入 2 位小数。 例如:1.03、123.95

  3. 如果用户输入整8位数字,那么他还可以输入小数点后最多2位小数。例如:12345678.12

因此我们有以下有效输入:

     1.  12345678
     2.  123.45
     3.  12345678.98

如何实现上述案例场景?

最佳答案

给你。这正是您想要的...

    import android.app.Activity;
    import android.os.Bundle;
    import android.text.Editable;
    import android.text.InputFilter;
    import android.text.Spanned;
    import android.text.TextWatcher;
    import android.util.Log;
    import android.widget.EditText;

    public class EditTextLogic extends Activity
    {
        EditText mEditText;
        String TEMP="",INPUT="";
        @Override
        protected void onCreate(Bundle savedInstanceState) 
        {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.edit_tesxt_logic);  
            mEditText =(EditText) findViewById(R.id.textView1);

            mEditText.addTextChangedListener(new TextWatcher() {

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

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

                @Override
                public void afterTextChanged(Editable Token) 
                {
                    if(Token.toString().length()<INPUT.length())
                    {
                        INPUT=Token.toString();
                    }
                }
            });
            mEditText.setFilters(new InputFilter[] {
                    new InputFilter() {
                        @Override
                        public CharSequence filter(CharSequence input, int arg1,
                                int arg2, Spanned arg3, int arg4, int arg5) 
                        {
                            CharSequence returned = validate(input.toString());
                            return returned;
                        }
                    }
            });

        }

        private CharSequence validate(String Token) {
            Log.i("Token",""+Token);
            TEMP = INPUT;
            TEMP += Token; 
            if(TEMP.contains("."))
            {
                try
                {
                    String FractionNo = TEMP.split("\\.")[1];
                    if(FractionNo.length()> 2)
                    {

                        return "";
                    }
                    else
                    {
                        INPUT = TEMP;
                        return Token;
                    }
                }
                catch(ArrayIndexOutOfBoundsException e)
                {
                    INPUT = TEMP;
                    return Token;
                }
            }
            else
            {
                if(TEMP.length()>8)
                {
                    return "";
                }
                else
                {
                    INPUT = TEMP;
                    return Token;
                }
            }
        }
    }

这是您的 XML:

<EditText
        android:id="@+id/textView1"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:inputType="numberDecimal"
        android:singleLine="true"/>

干杯! 享受编码的乐趣!!

关于android - 在 Android 中添加输入约束来编辑文本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24825012/

相关文章:

android - 在 Android 中格式化 SD 卡

text - 在 WebGL 中渲染带符号距离场的文本

android - TextInputEditText 使用自定义设计下划线修复字符长度

android - 调试时 Gradle Android studio 输出文件夹

android - 在 ndk{} DSL 中定义 LOCAL_SRC_FILES

java - 如何替换 fragment 运行时

pdf - 为什么通常无法从pdf文件中的文本复制 'f'字母?

javascript - JS对选中文本的复杂操作

android - 如何在不同的膨胀线性布局 View 中设置具有相同 id 的 edittext 的值?

java - 设置输入范围 1-30