如何为EditText设置特定格式(dd / mm / yyyy)

时间:2015-07-03 07:45:08

标签: android

我想知道如何拥有一个EditText,用户必须输入特定格式“dd / mm / yyyy”。我已经使用了“datetime”inputType,但这只会改变键盘上的键。

6 个答案:

答案 0 :(得分:3)

只需将其添加到您的Oncreate

即可
    et5.addTextChangedListener(new TextWatcher(){

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

        @Override
        public void onTextChanged(CharSequence s, int start, int before,
                int count) {
            // TODO Auto-generated method stub
            //Do Nothing
        }

        @Override
        public void afterTextChanged(Editable s) {
            // TODO Auto-generated method stub
            ss =input_Dob.getText().toString();
            int o = 0;

            if ((ss.charAt(2) == '/') && (ss.charAt(4) == '/')) {
            Toast.makeText(Create_An_Account.this, "Format Is right", Toast.LENGTH_LONG).show();

            } else {
                tv5.setTextColor(Color.RED);
                tv5.setText("Invalid Format");


            }
            ss = "";


        }


    });

答案 1 :(得分:0)

此控件看起来像您要查找的内容https://github.com/toshikurauchi/MaskedEditText

答案 2 :(得分:0)

我认为这样做的唯一方法就是在这个EditText中输入一个提示,它将像DD / MM / YYYY一样可视化,这样用户就可以以那种格式输入它(暗示) )。我不会像你想要的那样强化它。您可以输入单独的组件,例如DD,MM和YYYY的单独字段,并对这些组件进行约束,然后连接等。

答案 3 :(得分:0)

use this in Oncreate.

假设编辑文本id是edittext1。

ET1 =(EditText上)findviewbyid(R.id.editText1)

et1.addTextChangedListener(new TextWatcher() {

        @Override
        public void beforeTextChanged(CharSequence s, int start, int count,
                int after) {
            // TODO Auto-generated method stub
            // Add Here whatever you want to do before text changed
        }

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

}

        @Override
        public void afterTextChanged(Editable s) {
            // TODO Auto-generated method stub

/ *我的下面示例是查看必须包含的电子邮件.com& @ * /

            ss ="oooo"+input_Email.getText().toString();

            a = ss.length();
            a--;
            int o = 0;

            if ((ss.charAt(a) == 'm') && (ss.charAt(a - 1) == 'o')
                    && (ss.charAt(a - 2) == 'c')
                    && (ss.charAt(a - 3) == '.')) {
                o = 1;
                while (a >= 0) {
                    aa = ss.charAt(a);
                    if (aa == '@' || aa == '.') {
                        j++;
                    }
                    a--;
                }
            }
            if ((j >= 2) && (o == 1)) {
                tv8.setTextColor(Color.GREEN);
                tv8.setText("Correct");
                Email_Check="Correct";
            } else {
                tv8.setTextColor(Color.RED);
                tv8.setText("Invalid Email Address");
                Email_Check="Invalid";

            }
            ss = "";

        }
    });

答案 4 :(得分:0)

您可以使用以下正则表达式

  

“[0-9] {2} [/] [0-9] {2} [/] [0-9] {4}”

并验证用户输入并强制用户以dd / mm / yyyy格式输入。

但是如果你想动态地这样做意味着一旦他将日期输入dd / mm / yyyy格式就自动转换用户输入)然后你必须自定义编辑文本视图并实现自定义输入过滤器,你必须在那里写逻辑。

答案 5 :(得分:-1)

http://developer.android.com/reference/java/text/SimpleDateFormat.html

您可以使用它来格式化数据/时间。