Android之EditText

EditText

         属性介绍:

                   maxLength:设置最大输入字符数。

                   hint:设置空白提示文字。

                   textColorHint:设置空白提示文字的颜色。

                   enabled:设置是否可编辑(可以获得焦点)。

                   password:设置是否是密码输入框样式。

                   phoneNumber:设置是否是电话号码输入框样式,并且将软键盘同时被设置为拨号键盘。

                   numeric:设置只接收数字,数字类型一共有三种分别为integer(正整数)、signed(带符号整数)和decimal(浮点数)。

                   inputType:设置输入类型和合适的软键盘。

                   imeOptions:设置Enter键显示的效果。

 

         效果介绍:

                   1.可以通过设置EditText的高来实现文本域的效果。

                   2.imeOptions属性的常用值:

                            actionUnspecified  未指定,对应常量EditorInfo.IME_ACTION_UNSPECIFIED.效果:

                   actionNone 没有动作,对应常量EditorInfo.IME_ACTION_NONE 效果:

                   actionGo 去往,对应常量EditorInfo.IME_ACTION_GO 效果:

                   actionSearch 搜索,对应常量EditorInfo.IME_ACTION_SEARCH 效果: 

                   actionSend 发送,对应常量EditorInfo.IME_ACTION_SEND 效果:

                   actionNext 下一个,对应常量EditorInfo.IME_ACTION_NEXT 效果:

                   actionDone 完成,对应常量EditorInfo.IME_ACTION_DONE 效果:

                   部分效果根据输入法不同会有所改变。

                   3.设置全选,调用方法selectAll()。设置从第n个字符开始选择EditText文本,调用方法如下:

                            Editable editable = editText.getText();

                            Selection.setSelection(editable,n-1,editable.length());

                   获取选中的文本,调用方法如下:

                            int start=editText.getSelectionStart();

                   int end=editText.getSelectionEnd();

                   CharSequence selectText=editText.getText().subSequence(start, end);

 

                   4.设置输入框的边框,这里假设设置输入框未获取焦点和获取焦点之间,颜色不同,则将EditText设置背景为android:background="@drawable/bg_edittext",而“bg_edittext”为bg_edittext.xml,内容如下:

                            <?xml version="1.0" encoding="UTF-8"?>  

                            <selector xmlns:android="http://schemas.android.com/apk/res/android"> 

                             <item android:state_window_focused="false" android:drawable="@drawable/contact_edit_edittext_normal" /> 

                               <item android:state_focused="true" android:drawable="@drawable/contact_edit_edittext_focused" /> 

                            </selector>

 

                   同样的,contact_edit_edittext_normal.xml内容如下:

                            <?xml version="1.0" encoding="UTF-8"?>  

                            <shape xmlns:android="http://schemas.android.com/apk/res/android">  

                                <solid android:color="#FFFFFF" />  

                                <corners android:radius="3dip"/> 

                                <stroke   

                                     android:width="1dip"   

                                    android:color="#BDC7D8" />  

                            </shape>

 

                   contact_edit_edittext_focused.xml内容如下:

                            <?xml version="1.0" encoding="UTF-8"?>  

                            <shape xmlns:android="http://schemas.android.com/apk/res/android">  

                                <solid android:color="#FFFFFF" />  

                                <corners android:radius="3dip"/> 

                                <stroke   

                                    android:width="1dip"   

                                    android:color="#728ea3" />  

                            </shape>

                   其中的<solid android:color="#FFFFFF" />用来设置文本的背景色,<corners android:radius="3dip"/>用来设置拐角的圆滑度,<stroke android:width="1dip" android:color="#728ea3" />用来设置边框样式,width和color用来设置边框的宽度和颜色。

       5.设置输入过滤器:采用InputFilter接口来创建自定义的过滤器,它只包含一个名为filter()的方法。对于filter方法,声明如下:

                            public abstract CharSequence filter (

                                     CharSequence source,  //输入的文字

                                     int start,  //开始位置

                                     int end,  //结束位置

                                     Spanned dest, //当前显示的内容

                                     int dstart,  //当前开始位置

                                     int dend //当前结束位置

                            );

                   通过EditText对象调用setFilters方法,就可以对输入的内容进行限制,setFilters方法需要一个InputFilter对象数组。

                   假设只允许用户输入两个大写的字符,则可以做如下操作:

                            edittext.setFilters(new InputFilter[]{

                                     new InputFilter.AllCaps(),

                                     new InputFilter.LengthFilter(2)

                            });

                   假如想对输入的内容做改动,则可以实现filter方法,如下,将输入的内容都替换为“Empty”:

                            editText.setFilters(new InputFilter[] {

                                     new InputFilter() {   

                                               public CharSequence filter(CharSequence src, int start, int end, Spanned dst, int dstart, int dend) {  

                                             return src.length() < 1 ? dst.subSequence(dstart, dend) : " Empty ";  

                                         }

                            } });

posted @ 2014-04-23 17:04  烈日1990  阅读(612)  评论(0编辑  收藏  举报