android edittext textwatcher的用法

android开发中,可以使用TextWatcher监听editText中的文字变化


不罗嗦,直接上示例代码,以防忘记:


etComment.addTextChangedListener(new TextWatcher() {
			private String textBeforeChanged;

			@Override
			public void onTextChanged(CharSequence s, int start, int before,
					int count) {
				Editable editable = etComment.getText();
				if (getWordCount(editable.toString()) > 1000) {
					// 获取光标所在位置
					int selEndIndex = Selection.getSelectionEnd(editable);
					// 截取新字符串
					StringBuffer sB = new StringBuffer(editable.toString());
					while (getWordCount(sB.toString()) > 16) {
						sB.deleteCharAt(sB.length() - 1);
					}
					String newStr = sB.toString();

					etComment.setText(sB.toString());
					int newLen = newStr.length();
					// 旧光标位置超过字符串长度
					if (selEndIndex > newLen) {
						selEndIndex = newStr.length();
					}
					// 设置新光标所在的位置
					editable = etComment.getText();
					Selection.setSelection(editable, selEndIndex);
				}

			}

			private int getWordCount(String s) {
				// TODO Auto-generated method stub
				s = s.replaceAll("[^\\x00-\\xff]", "**");
				int length = s.length();
				return length;
			}

			@Override
			public void beforeTextChanged(CharSequence s, int start, int count,
					int after) {
				textBeforeChanged = s.toString();

			}

			@Override
			public void afterTextChanged(Editable s) {
				if (TextUtils.isEmpty(s.toString())) {
				}
				tvTextNum.setText(String.valueOf(500 - s.length()));

			}
		});


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值