1. 常用属性
EditText控件用于获取用户的输入。EditText类继承TextView类,能使用TextView的所有常用属性。可参考Android TextView控件。
属性 | 说明 |
android:hint | 设置EditText内容为空时显示的文本 |
android:textColorHint | 设置hint的字体颜色 |
android:editable | 设置是否可编辑 |
android:password | 设置是否是密码框,显示内容自动为星号 |
2. 输入限制
android:inputType属性,设置虚拟键盘
值 | 说明 |
none | 输入普通字符 |
text | 输入普通字符 |
textCapCharacters | 输入普通字符 |
textCapWords | 单词首字母大小 |
textCapSentences | 仅第一个字母大小 |
textAutoCorrect | 前两个自动完成 |
textAutoComplete | 前两个自动完成 |
textMultiLine | 多行输入 |
textImeMultiLine | 输入法多行(不一定支持) |
textNoSuggestions | 不提示 |
textUri | URI格式 |
textEmailAddress | 电子邮件地址格式 |
textEmailSubject | 邮件主题格式 |
textShortMessage | 短消息格式 |
textLongMessage | 长消息格式 |
textPersonName | 人名格式 |
textPostalAddress | 邮政格式 |
textPassword | 密码格式 |
textVisiblePassword | 密码可见格式 |
textWebEditText | 作为网页表单的文本格式 |
textFilter | 文本筛选格式 |
textPhonetic | 拼音输入格式 |
number | 数字格式 |
numberSigned | 有符号数字格式 |
numberDecimal | 可以带小数点的浮点格式 |
phone | 拨号键盘 |
datetime | 时间日期 |
date | 日期键盘 |
time | 时间键盘 |
android:digits属性,指定要支持的字符
android:digits=“0123456789abcdefghijklmnopqrstuvwxyz”
android:numeric属性,只支持数字
值 | 说明 |
integer | 只能输入整数 |
decimal | 可以输入小数 |
signed | 有符号数字格式 |
3. 动态设置密码格式
- setInputType(int)方法。
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);
}
- setTransformationMethod(TransformationMethod)方法。
if (show) {
EditText.setTransformationMethod(
HideReturnsTransformationMethod.getInstance());
} else {
EditText.setTransformationMethod(
PasswordTransformationMethod.getInstance());
}
4. 软键盘右下角按键
android: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 |
设置下面两个属性中的一个即可使这个属性生效
- 将singleLine设置为true
- 将inputType设置为text
监听软件盘按钮,返回true来屏蔽系统默认操作。
EditText.setOnEditorActionListener(new TextView.OnEditorActionListener() {
@Override
public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
if (actionId == EditorInfo.IME_ACTION_NEXT) {
return true;
}
return false;
}
});
5. 设置光标位置
EditText的setSelection()方法实际上是调用Selection.setSelection()的方法实现的。
- 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是光标结束的位置。
- 如果count大于0,start是光标开始的位置。
- before表示原有字符被删除的数量。
- count表示输入字符的长度。添加时为1,删除时为0。
具体如下
- 添加一个字符,start为输入光标处,count为1,before为0。拷贝一个字符串,count为字符串长度。
- 删除一个字符,start为结束光标处,count为0,before为1。剪切一个字符串,before为字符串长度。
- 拷贝一个长度为3的字符串,粘贴覆盖2个字符串,start为输入光标处,count为3,before为2。
相关文章Android TextView控件Android Span应用Android ParagraphStyle应用Android EditText控件Android 监听软键盘显示和隐藏