原生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);

                }
            }
        });

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值