处理Edittext限制字数提示,以及回车换行功能。

首先是edittext布局文件

    <EditText
        android:inputType="text"
        android:imeOptions="actionDone"
        android:id="@+id/ets"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

 

首先动态加上俩行代码,为了防止edittext输入不换行问题:

ets.setHorizontallyScrolling(false);
ets.setMaxLines(Integer.MAX_VALUE);

然后我们定义输入内容个数:

final int length = 40;

然后通过edittext输入监听:

        ets.addTextChangedListener(new TextWatcher() {
            private CharSequence temp;
            private int editStart ;
            private int editEnd ;
            @Override
            public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
            }

            @Override
            public void onTextChanged(CharSequence charSequence, int start, int after, int count) {
                temp = charSequence.toString().trim();
                if(temp.length()>0) {
                    numBefore=temp.length();//已经输入的字符长度
                    numAfter=length-temp.length();
                    //最终显示的字符数
                    tv_times.setText((numBefore)+"");
                    if (temp.length() > length){
                        Toast.makeText(MainActivity.this, "你输入得字数超过限制", Toast.LENGTH_SHORT).show();
                    }
                }else {
                    //最终显示的字符数
                    tv_times.setText("0");
                }
            }

            @Override
            public void afterTextChanged(Editable editable) {
                try {
                    editStart = ets.getSelectionStart();//开始的字符位置
                    editEnd = ets.getSelectionEnd();//结束的字符位置
                    if (temp.length() >length) {
                        editable.delete(editStart-1, editEnd);//删除
                        int tempSelection = editStart;
                        ets.removeTextChangedListener(this);
                        ets.setText(editable);
                        ets.addTextChangedListener(this);
                        ets.setSelection(tempSelection);
                    }
                } catch (Exception e) {
                    e.printStackTrace();
                }

            }
        });

ok,这样实现了我们想要得效果咯。

©️2020 CSDN 皮肤主题: 大白 设计师: CSDN官方博客 返回首页
实付0元
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值