Android EditText空间验证 [英] Android EditText Space Validation

查看:53
本文介绍了Android EditText空间验证的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我的android应用程序中有一个Edittext.我不想允许用户输入第一个空格字符..但是在输入其他字符后,用户也可以输入空格 ..我使用

I have an Edittext in my android application. I don't want to allow user to enter first space character..but after entering other charecter user can enter space also..I used

    <EditText
    android:id="@+id/editText1_in_row"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:inputType="text" 
    android:digits="_,qwertzuiopasdfghjklyxcvbnm,QWERTYUIOPASDFGHJKLZXCVBNM,0123456789">

但在这种情况下,用户无法输入空格.

but in this case user can not enter space.

我也曾经使用过 Text Watcher ,但是在输入文本时,我不需要允许用户输入android:digits有效.

I have also used Text Watcher but I need not to allow user at the time of entering text as android:digits works.

推荐答案

final EditText editText = (EditText)findViewById(R.id.editText1_in_row);


        InputFilter filter = new InputFilter() { 
            boolean canEnterSpace = false;

            public CharSequence filter(CharSequence source, int start, int end,
                    Spanned dest, int dstart, int dend) {

                if(editText.getText().toString().equals(""))
                {
                    canEnterSpace = false;
                }

                StringBuilder builder = new StringBuilder();

                for (int i = start; i < end; i++) { 
                    char currentChar = source.charAt(i);

                    if (Character.isLetterOrDigit(currentChar) || currentChar == '_') {
                        builder.append(currentChar);
                        canEnterSpace = true;
                    }

                    if(Character.isWhitespace(currentChar) && canEnterSpace) {
                        builder.append(currentChar);
                    }


                }
                return builder.toString();          
            }

        };


        editText.setFilters(new InputFilter[]{filter});

并从您的EditText中删除此属性

and remove this property from your EditText

android:digits="_,qwertzuiopasdfghjklyxcvbnm,QWERTYUIOPASDFGHJKLZXCVBNM,0123456789"

此代码完全根据您的需求工作.

This code works exactly according to your needs.

这篇关于Android EditText空间验证的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆