EditText
一、XML
与TextView比较
1、效果基本与TextView相同
https://blog.csdn.net/weixin_48261911/article/details/113182048
2、文本超链接相关(忽略,达不到预期)
初始设定文本是有效的,但是输入删除文本,没有实时检查是否是超文本连接。
3、最少行数测试是无效的
最少行数测试是无效的
android:minLines="2"
EditText自身的其他功能
1、限制输入文本类型
下面是常用的4种,其他可Google。
//限制输入文本类型 数字
android:inputType="number"
//限制输入文本类型 可带小数点的数字
android:inputType="numberDecimal"
//限制输入文本类型 数字密码
android:inputType="numberPassword"
//限制输入文本类型 文本密码
android:inputType="textPassword"
2、限制输入指定字符
这里限制输入检测的是字符串中的所有单个字符
android:digits="我温城"
3、提示文本
当前EditText文本内容为空,会显示提示文本。
//设置提示文本
android:hint="请输入我是温金城"
//设置提示文本,设定提示文本颜色
android:textColorHint="@color/r"
android:hint="请输入我是温金城"
二、CODE
1、上述XML实现的效果
均可以通过代码实现。另外可实现动态变化的效果。
2、输入实时筛查
通过addTextChangedListener获取到文本改变监听,然后筛选信息,展示信息。
//模拟数据
listGv11 = new ArrayList<>();
listGv11.add("深圳龙岗区");
listGv11.add("深圳福田区");
listGv11.add("深圳罗湖区");
listGv11.add("深圳南山区");
listGv11.add("深圳盐田区");
listGv11.add("深圳宝安区");
listGv11.add("深圳龙华区");
listGv11.add("深圳坪山区");
listGv11.add("深圳大鹏新区");
//实时监测EditText输入
edit_11.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
//改变文本前
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
//改变文本时
}
@Override
public void afterTextChanged(Editable s) {
//改变文本后
String strTv = "";
//筛查
for (int i = 0; i < listGv11.size(); i++){
if (listGv11.get(i).contains(s.toString())){
strTv += (strTv.length() > 0 ? "," : "") + listGv11.get(i);
}
}
//筛查结果显示
tv_11.setText(strTv);
}
});
3、格栅输入框效果
使用RelativeLayout父布局,将负责接收的输入框背景透明,文本透明,覆盖在显示层组件上。负责接收的输入框接收文本,处理后变更下方显示层组件信息。
//接收输入框 监听焦点获取,设置当前光标位置。
edt5.setOnFocusChangeListener(new View.OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus) {
if (hasFocus) {
edt5.setSelection(edt5.getText().length());
}
}
});
//接收输入框 监听文本变化,并显示文本
edt5.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
//改变显示信息
edt1.setText(s.length() > 0 ? s.charAt(0) + "" : "");
edt2.setText(s.length() > 1 ? s.charAt(1) + "" : "");
edt3.setText(s.length() > 2 ? s.charAt(2) + "" : "");
edt4.setText(s.length() > 3 ? s.charAt(3) + "" : "");
}
@Override
public void afterTextChanged(Editable s) {
if (s.length() == 4) {
//这里加个判断,作输入信息的验证。
Toast.makeText(EditTextCodeActivity.this, "无效识别码!请重新输入!", Toast.LENGTH_SHORT).show();
edt5.setText("");
InputMethodManager inputMethodManager = (InputMethodManager) getSystemService(Activity.INPUT_METHOD_SERVICE);
inputMethodManager.hideSoftInputFromWindow(edt5.getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS);
}
}
});