android的EditText 监听Text 的改动, textChange事件监听及对输入字符的限制
package org.lyw.android; import android.app.Activity; import android.os.Bundle; import android.text.Editable; import android.text.TextWatcher; import android.util.Log; import android.widget.EditText; import android.widget.TextView; /** * 限制EditText输入字符 * * @author liyingwei * @2013-2-24 上午1:02:58 * @AndroidTestActivity.java */ public class AndroidTestActivity extends Activity { private EditText inputa; private EditText inputb; private TextView result; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.auto_layout); inputa = (EditText) findViewById(R.id.inputa); inputb = (EditText) findViewById(R.id.inputb); result = (TextView) findViewById(R.id.result); inputa.addTextChangedListener(new TextFilter(inputa)); inputb.addTextChangedListener(new TextFilter(inputb)); } private boolean textFilter(String text) { boolean isLegal = false; if (null != text && !"".equals(text.trim())) { if (text.indexOf(".") > 0) { if (text.endsWith(".")) { isLegal = text.matches("^\\d{1,4}\\.$"); } else { isLegal = text.matches("^\\d{1,4}\\.\\d$"); } } else { isLegal = text.matches("^\\d{1,4}$"); } } return isLegal; } class TextFilter implements TextWatcher { private EditText editText; private String rt; public TextFilter(EditText editText) { this.editText = editText; } @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { Log.w("beforeTextChanged", "-----------------------------------"); Log.e("beforeTextChanged@ ", " CharSequence: " + s + " -start: " + start + " -count: " + count); } @Override public void onTextChanged(CharSequence s, int start, int before, int count) { Log.w("onTextChanged", "-----------------------------------"); Log.e("onTextChanged@ ", "CharSequence: " + s + " -start: " + start + " before: " + before + " -count: " + count); String a = inputa.getText().toString(); String b = inputb.getText().toString(); if (null != s && !"".equals(s.toString().trim())) { String input = s.toString(); if (textFilter(input)) { if (isEmpty(a) || isEmpty(b)) { result.setText("0.00"); } else { double ad = Double.parseDouble(a); double bd = Double.parseDouble(b); result.setText(String.format("%1$.2f", (ad * bd))); } } else { editText.setText(input.substring(0, start) + input.substring(start + count)); editText.requestFocus(); editText.setSelection(start); } } else { checkResult(a, b); } } @Override public void afterTextChanged(Editable s) { // editText.setText(rt); Log.w("afterTextChanged", "-----------------------------------"); Log.e("afterTextChanged@ ", s.toString()); } private void checkResult(String a, String b) { if (!Utils.isEmpty(a) && !Utils.isEmpty(b)) { return; } String resultStr = trim(a) + trim(b); if (isEmpty(resultStr)) { result.setText(""); } else { result.setText("0.00"); } } } private boolean isEmpty(String str) { return null == str || "".equals(str.trim()); } /** * 去空格 * * @param o trim对象 * @return trim后的对象 * @see [类、类#方法、类#成员] */ public static String trim(Object o) { String str = ""; if (null != o) { str = o.toString().trim(); } return str; } }
原创代码,转载请注明出处.
相关推荐
android EditText 限制最大输入字符,是字符不是长度哦
Android EditText 正则表达式 限制数字、字母、字符 输入 密码框
EditText禁止粘贴内容输入,修改粘贴内容, 参考: 禁止EditText 输入粘贴版内容 http://blog.csdn.net/xiaobijia/article/details/41081595
EditText监听输入完成,监听edittext,精确判断什么时候输入完成
Android限制只能输入中文的EditText,对输入的内容进行监听拦截。
Android开发之EditText字符串过滤器InputFilter
Android EditText限制输入字符类型的方法总结 前言: 最近的项目上需要限制EditText输入字符的类型,就把可以实现这个功能的方法整理了一下: 1、第一种方式是通过EditText的inputType来实现,可以通过xml或者Java...
Android EditText限制输入字符的方法总结 最近项目要求限制密码输入的字符类型, 例如不能输入中文。 现在总结一下EditText的各种实现方式, 以比较各种方法的优劣。 第一种方式: 设置EditText的inputType属性...
Android 监听EditText变化事件
这是一个简单的工具类,Edittext的字符限制。可以限制最大字符数和最小字符数。
android 里,我们常需要限制向EditText输入的内容,在此,我总结了4中可行的方法,希望可以帮助大家
android 中如何限制 EditText 最大输入字符数,此文档有较好的例子讲解
Android EditText多行文本输入 字数统计 限制数量
Edittext限制字符数和限制表情符
EditText输入限制,比如只能输入6个汉字或12个英文字母、数字
android EditText禁止输入法表情,完美解决表情不能屏蔽的情况,不存在个别表情屏蔽不了的情况,不明白的地方可以参考我的博客。
监听edittext输入的字符长度,可自行添加需要的操作
android 输入框EditText禁止输入Emoji表情符,博客地址:http://blog.csdn.net/elsdnwn/article/details/45390771
自己做的一个自定义控件,里面主要是自定以弹出框,对edittext的回调处理和edittext输入时自动千分位分隔和金额限制
需求:个性签名的最大长度设置为40个字符或者20个汉字。并进行超过最大字符时的提示。