Android的EditText
EditText详解
默认文字
-
布局中
android:hint="默认显示的字符串" -
代码中
// 定义hint的值
SpannableString hintStr = new SpannableString(g""));
// 设置字体大小 true表示单位是SP
AbsoluteSizeSpan ass = new AbsoluteSizeSpan(14, true);
hintStr.setSpan(ass, 0, hintStr.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
et.setHint(new SpannedString(hintStr));
et.setPadding(ScreenUtil.dp2px(this, 3), 0, 0, 0);
android:inputType=""
- none 不弹出键盘
- text 普通文本键盘
- textEmailAddress 普通文本键盘,"@"
- textUri 普通文本键盘,"/"
- number 数字键盘
- phone Phone-Style键盘
- textCapSentences 正常的文本键盘但是每一句话第一个字母大写
- textCapWords 正常文本键盘但是每一个单词的第一个字母大写
- textAutoCorrect 自动提示拼写错误
- textPassword 输入的文字都变成点点
- textMultiLine 允许输入多行文本,可以换行
android:imeOptions=""
- actionSearch 键盘出现搜索图标
- actionNext 键盘出现Next图标
- actionDone 键盘是完成图标
- actionGo 键盘出现Go图标
自定义键盘出现文字
- imeActionLabel 自定义键盘出现文字
自定义光标
- 在资源文件中建立需要的Shape资源
- 设置android:textCursorDrawable="@drawable/文件名"
- cursorVisible="boolean" 设置光标是否可见
AutoCompleteTextView
android:completionThreshold="1"//默认是2,这就是为什么默认输入两个字符才能显示出提示信息的原因
限制键盘的输入类型和长度
1. 限制输入类型:
代码中:et.setInputType(InputType.TYPE_TEXT_NUMBER);
xml中:android:inputType="number"
2. 限制输入长度:
代码中:et.setFilters(new InputFilter[]{new InputFilter.LengthFilter(10)});
xml中:android:maxLength="10"
3. 限制输入固定的某些字符
代码中:et.setKeyListener(DigitsKeyListener.getInstance(“123456xyz”);
xml中:android:digits="@string/input_num_character"
代码中监听输入键盘按钮
editText.setOnEditorActionListener(new OnEditorActionListener() {
@Override
public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
boolean handled = false;
if (actionId == EditorInfo.IME_ACTION_SEND) {
sendMessage();
handled = true;
}
return handled;
}
});
代码中监听输入文本
editText. addTextChangedListener(new TextWatcher() {
@Override
public void afterTextChanged (Editable s){
//文本编辑结束之后
}
@Override
public void beforeTextChanged (CharSequence s,int start,
int count,int after){
//文本编辑之前
}
@Override
public void onTextChanged (CharSequence s, int start,
int before,int count){
//文本编辑时
}
});
明文和密文的处理
kotlin版
editText.apply {
if (inputType == InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD) {
//文本内容为密文
inputType = InputType.TYPE_TEXT_VARIATION_PASSWORD
transformationMethod = PasswordTransformationMethod.getInstance()
icon.setImageDrawable(ContextCompat.getDrawable(this@MainActivity, R.drawable.ic_eyes_closed))
setSelection(text.length)
} else {
//文本内容为展示明文
inputType = InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD
transformationMethod = HideReturnsTransformationMethod.getInstance()
icon.setImageDrawable(ContextCompat.getDrawable(this@MainActivity, R.drawable.ic_eyes))
setSelection(text.length)
}
}
加粗斜体显示不全
StyleSpan style = new StyleSpan(Typeface.BOLD_ITALIC);
SpannableString string = new SpannableString(orderState+" ");
string.setSpan(style, 0, content.length(), SpannableString.SPAN_EXCLUSIVE_EXCLUSIVE);
tv.setText(string);

浙公网安备 33010602011771号