您的位置:首页 > 移动开发 > Android开发

android EditText输入限制,只输入数字电话或者特殊字符

2014-05-25 22:16 676 查看
http://blog.sina.com.cn/s/blog_7033e38201010q4k.html

EditText的layout设置大家都知道就不累赘了,这里主要说怎么设置输入限制。

EditText的属性里面已经封装好了相关的设置,上一篇文章里面也提到了,不熟悉的可以去查看上一篇EditText属性大全,这里着重讲输入限制的属性:

android:digits="1234567890.+-*/%\n()"

限制输入框中只能输入自己定义的这些字符串 如果输入其它将不予以显示

android:phoneNumber="true"

限制输入框中只能输入手机号码

android:password="true"

限制输入框中输入的任何内容将以"*"符号来显示

android:hint="默认文字"

输入内容前默认显示在输入框中的文字

android:textColorHint="#FF0000"

设置文字内容颜色

android:enabled="false"

设置输入框不能被编辑

如果还有一些特殊的限制,比如我做一个项目只能输入数字,且输入0之后再输入1,则只显示1,这就需要单独去进行设置了,也非常的简单。

给EditText添加一个监听事件,当检测到里面的内容变化以后,根据需求,修改相关的内容就可以了。

使用EditText的addTextChangedListener(TextWatcher
watcher)方法对EditText实现监听,TextWatcher是一个接口类,所以必须实现TextWatcher里的抽象方法:

当EditText里面的内容有变化的时候,触发TextChangedListener事件,就会调用TextWatcher里面的抽象方法。

public class MainActivity extends Activity


    private EditText
text; 

    String str; 

    @Override

    public void onCreate(Bundle
savedInstanceState) { 

        super.onCreate(savedInstanceState); 

        setContentView(R.layout.main); 

         

        text = (EditText)findViewById(R.id.text); 

        text.addTextChangedListener(textWatcher); 

    } 

     

    private TextWatcher
textWatcher = new TextWatcher() { 

         

        @Override   

        public void afterTextChanged(Editable
s) {    

            //
TODO Auto-generated method stub   

            Log.d("TAG","afterTextChanged--------------->");  

        }  

         

        @Override

        public void beforeTextChanged(CharSequence
s, int start, int count, 

                int after)


            //
TODO Auto-generated method stub

            Log.d("TAG","beforeTextChanged--------------->"); 

        } 

         @Override   

        public void onTextChanged(CharSequence
s, int start, int before,    

                int count)
{    

            Log.d("TAG","onTextChanged--------------->");   

            str = text.getText().toString(); 

            try { 

                //if
((heighText.getText().toString())!=null) 

                Integer.parseInt(str); 

                 

            } catch (Exception
e) { 

                //
TODO: handle exception

                

            } 

                             

        }                   

    };

}

 

该方法可以监听到Edittext的变化,我在onTextChanged里面监听s值得变化,然后做修改以后再setText到EditText里面,不过这时候经常会遇见光标跑到最前面的情况,很恶心,随意每次setText的时候都需要用ev.setSelection(str.length())去重新设置光标位置为str字符串的最后。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: