android编辑框最大字数,(转)Android中EditText的输入字数限制

在开发应用的时候,经常会限制用户输入的字数,比如发表评论或者其它什么的,下面来个简单的demo

EditText

et_content;//定义一个文本输入框
TextView

tv_num;// 用来显示剩余字数
int num =

10;//限制的最大字数

et_content = (EditText)

findViewById(R.id.et_content);
tv_num

= (TextView) findViewById(R.id.tv_num);


tv_num.setText("10");

下面为EditText文本框添加监听

et_content.addTextChangedListener(new TextWatcher() {

private CharSequence temp;

private int selectionStart;

private int selectionEnd;

@Override

public void onTextChanged(CharSequence s, int start, int

before,

int count) {

temp = s;

System.out.println("s="+s);

}

@Override

public void beforeTextChanged(CharSequence s, int start, int

count,

int after) {

}

@Override

public void afterTextChanged(Editable s) {

int number = num - s.length();

tv_num.setText("" + number);

selectionStart = et_content.getSelectionStart();

selectionEnd = et_content.getSelectionEnd();

//System.out.println("start="+selectionStart+",end="+selectionEnd);

if (temp.length() > num) {

s.delete(selectionStart - 1, selectionEnd);

int tempSelection = selectionStart;

et_content.setText(s);

et_content.setSelection(tempSelection);//设置光标在最后

}

}

});

这样就可以实现了。

二.方法二:

利用EditText可以设置filter的特性,自定义一个LengthFilter,当输入字数超过限制时

,做出自定义的提示

// 输入框限制输入字数

InputFilter[] filters = new InputFilter[1];

filters[0] = new InputFilter.LengthFilter(Constant.TEXT_MAX)

{

@Override

public CharSequence filter(CharSequence source, int start, int

end,

Spanned dest, int dstart, int dend) {

if (source.length() > 0

&& dest.length() ==

Constant.TEXT_MAX) {

if ((System.currentTimeMillis() - toastTime) >

interval) {

toastTime = System.currentTimeMillis();

Toast

.makeText(KaguHomeActivity.this,

R.string.edit_content_limit,

Toast.LENGTH_SHORT).show();

}

}

if (dest.toString().equals(

getResources().getString(R.string.input_default_txt))) {

Bundle data = new Bundle();

data.putCharSequence("source", source);

Message message = textHandler.obtainMessage();

message.setData(data);

message.sendToTarget();

}

return super.filter(source, start, end, dest, dstart, dend);

}

};

editText.setFilters(filters);

private Handler textHandler = new Handler() {

@Override

public void handleMessage(Message msg) {

Bundle data = msg.getData();

CharSequence source = data.getCharSequence("source");

editText.setTextColor(Color.BLACK);

editText.setText(source);

editText.setSelection(source.length());

}

};

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值