Android EditText控件

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()方法。
    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()方法。
    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) {
            Toast.makeText(EditTextActivity.this, "Next Click", Toast.LENGTH_LONG).show();
            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是光标开始的位置,结束时为start加上count。否则start是光标结束的位置。
  • before表示原有字符被删除的数量。用delete删除时为1,而在添加字符时为0。
  • count表示输入字符的长度。添加时为1,删除时为0。

当进行拷贝、剪切、粘贴时,before和count为实际字符的长度。
(1) 添加一个字符,start为输入光标处,count为1,before为0。拷贝一个字符串,count为字符串长度。
(2) 删除一个字符,start为结束光标处,count为0,before为1。剪切一个字符串,before为字符串长度。
(3) 拷贝一个长度为3的字符串,粘贴覆盖2个字符串,start为输入光标处,count为3,before为2。

猜你喜欢

转载自blog.csdn.net/chennai1101/article/details/81775870