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; } }
原创代码,转载请注明出处.
相关推荐
4. **监听输入事件**: - 可以通过监听`TextWatcher`的`beforeTextChanged`, `onTextChanged`, 和 `afterTextChanged`方法,实时检测用户输入是否符合正则表达式,并提供实时反馈。 5. **错误提示**: - 当用户...
除了上述方法,还可以通过监听`EditText`的`TextWatcher`事件来实现字符数的限制,但这通常用于实时显示剩余字符数,而不能直接阻止超出范围的输入。例如: ```java editText.addTextChangedListener(new ...
然而,有时候我们希望对用户的输入进行限制,比如只允许输入数字、字母或者特定格式的数据,这时我们就需要用到EditText的字符串过滤器——InputFilter。InputFilter是Android SDK提供的一种机制,用于控制EditText...
以下是如何实现Android限制只能输入中文的EditText的详细步骤及原理: 1. **EditText基础知识**: EditText是Android中的一个视图组件,它允许用户输入文本。它继承自TextView,提供了更多的交互功能,如文本编辑...
总之,无论是原生Android开发还是PhoneGap混合应用开发,监听`EditText`输入完成都需要结合文本变化监听和特定的用户行为事件。在Android原生开发中,这通常涉及到`TextWatcher`和`OnEditorActionListener`;而在...
在Android开发中,`EditText`控件用于接收用户输入的文字,常常需要对用户输入的字符进行限制,以满足特定的功能需求。...通过结合`TextWatcher`和合理的逻辑判断,你可以创建出符合需求的`EditText`输入限制功能。
Android 中限制 EditText 最大输入字符数的方法 Android 中限制 EditText 最大输入字符数是 Android 开发中常见的问题,本文将详细介绍限制 EditText 最大输入字符数的三种方法。 方法一:在 xml 文件中设置文本...
Android EditText限制输入字符类型的方法总结 前言: 最近的项目上需要限制EditText输入字符的类型,就把可以实现这个功能的方法整理了一下: 1、第一种方式是通过EditText的inputType来实现,可以通过xml或者Java...
EditText禁止粘贴内容输入,修改粘贴内容, 参考: 禁止EditText 输入粘贴版内容 http://blog.csdn.net/xiaobijia/article/details/41081595
本篇将深入探讨如何实现`Android EditText`的多行文本输入字数统计及限制功能。 首先,我们需要明白`EditText`的基本用法。它是一个可编辑的文本视图,继承自`TextView`,用户可以在其中输入、修改或删除文本。默认...
有时候,我们可能需要对用户输入的字符数量进行限制,比如信用卡号、密码输入等场景,这时就需要设置`EditText`的最大输入字符数。不同于字节长度或字节数,这里的“字符”通常指的是用户肉眼可见的字符,包括英文、...
这种方法更加灵活,可以实现复杂的输入限制,如字符数限制、格式验证等。 ```java editText.addTextChangedListener(new TextWatcher() { @Override public void beforeTextChanged(CharSequence s, int start, ...
在Android开发中,EditText是用户输入文本的基本组件,它允许用户在界面上输入、编辑文本。有时,我们可能需要对EditText的输入进行限制,比如限制输入的字符长度、类型、格式等,以满足特定的应用场景需求。在...
3. 在代码中操作`EditText`:通过`findViewById()`方法获取`FloatingLabel`对象,并进行设置或监听事件。 除此之外,还可以自定义悬浮文字的颜色、字体大小、动画效果等。这通常通过设置库提供的属性或者直接修改...
Android EditText限制输入字符的方法总结 最近项目要求限制密码输入的字符类型, 例如不能输入中文。 现在总结一下EditText的各种实现方式, 以比较各种方法的优劣。 第一种方式: 设置EditText的inputType属性...
另一种方法是通过自定义`InputFilter`来实现输入限制。`InputFilter`可以过滤输入的字符,我们可以在其中实现字数检查并阻止超出限制的输入: ```java InputFilter filter = new InputFilter() { @Override ...
在Android开发中,`EditText`是用户输入文本的视图组件,经常用于收集用户的文本信息。为了能够实时响应`EditText`中的文本变化,开发者通常会使用`TextWatcher`监听器。`TextWatcher`是一个接口,提供了三个方法,...
在自定义的`EditText`中,我们需要监听用户的输入事件,这可以通过`TextWatcher`来实现。`TextWatcher`提供了`beforeTextChanged`、`onTextChanged`和`afterTextChanged`三个方法,分别在文字变化前、变化中和变化后...
1. 实时检查:可以监听`TextWatcher`事件,当`onTextChanged()`触发时,检查当前字符数,并在超出限制时给出提示。下面是一个简单的例子: ```java editText.addTextChangedListener(new TextWatcher() { @...
本文将详细介绍如何在Android中实现`EditText`限制输入字符数的功能,并提供相应的代码示例。 首先,我们需要了解`EditText`的基本属性。`android:maxLength` 是一个内置的属性,可以用来设置`EditText`的最大字符...