Android EditText类

来源:互联网 发布:编曲软件 知乎 编辑:程序博客网 时间:2024/05/02 02:45

Android EditText类

EditText类用于获取用户的输入。

1、常用属性

EditText类继承TextView类,能使用TextView的所有常用属性。可参考Android TextView类。
android:hint设置EditText内容为空时显示的文本
android:textColorHint设置hint的字体颜色
android:editable设置是否可编辑
android:password设置是否是密码框,显示内容自动为星号

2、输入限制

(1) android:inputType属性,设置虚拟键盘
android:inputType="none"   输入普通字符
android:inputType="text"   输入普通字符
android:inputType="textCapCharacters"   输入普通字符
android:inputType="textCapWords"   单词首字母大小
android:inputType="textCapSentences"   仅第一个字母大小
android:inputType="textAutoCorrect"   前两个自动完成
android:inputType="textAutoComplete"   前两个自动完成
android:inputType="textMultiLine"   多行输入
android:inputType="textImeMultiLine"   输入法多行(不一定支持)
android:inputType="textNoSuggestions"   不提示
android:inputType="textUri"   URI格式
android:inputType="textEmailAddress"   电子邮件地址格式
android:inputType="textEmailSubject"   邮件主题格式
android:inputType="textShortMessage"   短消息格式
android:inputType="textLongMessage"   长消息格式
android:inputType="textPersonName"   人名格式
android:inputType="textPostalAddress"   邮政格式
android:inputType="textPassword"   密码格式
android:inputType="textVisiblePassword"   密码可见格式
android:inputType="textWebEditText"   作为网页表单的文本格式
android:inputType="textFilter"   文本筛选格式
android:inputType="textPhonetic"   拼音输入格式
android:inputType="number"   数字格式
android:inputType="numberSigned"   有符号数字格式
android:inputType="numberDecimal"   可以带小数点的浮点格式
android:inputType="phone"   拨号键盘
android:inputType="datetime"   时间日期
android:inputType="date"   日期键盘
android:inputType="time"   时间键盘

(2) android:digits属性,指定要支持的字符
android:digits="0123456789abcdefghijklmnopqrstuvwxyz"

(3) android:numeric属性,只支持数字
android:numeric="integer"   只能输入整数
android:numeric="decimal"   可以输入小数
android:numeric="signed"   有符号数字格式

3、动态设置密码格式

(1) setInputType方法
if (show) {EditText.setInputType(InputType.TYPE_CLASS_TEXT  |InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD);} else {EditText.setInputType(InputType.TYPE_CLASS_TEXT  |InputType.TYPE_TEXT_VARIATION_PASSWORD);}
(2) setTransformationMethod方法
if (show) {EditText.setTransformationMethod(HideReturnsTransformationMethod.getInstance());} else {EditText.setTransformationMethod(PasswordTransformationMethod.getInstance());}

4、软键盘右下角按键

android:imeOptions设置软键盘右下键按键

android:imeOptions="actionUnspecified"   对于常量EditorInfo.IME_ACTION_UNSPECIFIED 
android:imeOptions="actionNone"   对于常量EditorInfo.IME_ACTION_NONE 
android:imeOptions="actionGo"   对于常量EditorInfo.IME_ACTION_GO 
android:imeOptions="actionSearch"   对于常量EditorInfo.IME_ACTION_SEARCH 
android:imeOptions="actionSend"   对于常量EditorInfo.IME_ACTION_SEND 
android:imeOptions="actionNext"   对于常量EditorInfo.IME_ACTION_NEXT 
android:imeOptions="actionDone"   对于常量EditorInfo.IME_ACTION_DONE 

设置下面两个属性中的一个即可使这个属性生效
(1) 将singleLine设置为true
(2) 将inputType设置为text 

监听软件盘按钮,返回true来屏蔽系统默认操作。
EditText.setOnEditorActionListener(new TextView.OnEditorActionListener() {@Overridepublic boolean onEditorAction(TextView v, int actionId, KeyEvent event) {if (actionId == EditorInfo.IME_ACTION_NEXT) {Toast.makeText(EditTextActivity.this, "Next Click", Toast.LENGTH_LONG).show();return true;}return false;}});

5、设置光标位置

setSelection(int index) 将光标移至index处。
setSelection(int start, int stop) 选择从start到stop处的文本。

6、TextWatcher监听器

EditText调用addTextChangedListener(TextWatcher watcher)来添加监听器。
public interface TextWatcher extends NoCopySpan {    public void beforeTextChanged(CharSequence s, int start,                                  int count, int after);    public void onTextChanged(CharSequence s, int start, int before, int count);    public void afterTextChanged(Editable s);}
在onTextChanged方法中有4个参数。
s表示输入框中字符。
start表示光标的位置。如果count大于0,start是光标开始的位置,结束时为start加上count。否则start是光标结束的位置。
before表示原有字符被删除的数量。用delete删除时为1,而在添加字符时为0。
count表示输入字符的长度。添加时为1,删除时为0。
当进行拷贝、剪切、粘贴时,before和count为实际字符的长度。
原创粉丝点击