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 监听软键盘显示和隐藏