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设置软键盘右下键按键。

Android 实现EditText条形框 android edittext 设置内容_android


说明

图标

actionUnspecified

对应常量EditorInfo.IME_ACTION_UNSPECIFIED

Android 实现EditText条形框 android edittext 设置内容_Android_02

actionNone

对应常量EditorInfo.IME_ACTION_NONE

Android 实现EditText条形框 android edittext 设置内容_Android_03

actionGo

对应常量EditorInfo.IME_ACTION_GO

Android 实现EditText条形框 android edittext 设置内容_Text_04

actionSearch

对应常量EditorInfo.IME_ACTION_SEARCH

Android 实现EditText条形框 android edittext 设置内容_Android_05

actionSend

对应常量EditorInfo.IME_ACTION_SEND

Android 实现EditText条形框 android edittext 设置内容_android_06

actionNext

对应常量EditorInfo.IME_ACTION_NEXT

Android 实现EditText条形框 android edittext 设置内容_Text_07

actionDone

对应常量EditorInfo.IME_ACTION_DONE

Android 实现EditText条形框 android edittext 设置内容_Android_08

设置下面两个属性中的一个即可使这个属性生效

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