EditText输入字符控制(二)
来源:互联网 发布:爱思唯尔数据库英文 编辑:程序博客网 时间:2024/05/22 16:46
除了对EditText设置filter外(请察看EditText输入字符数控制),还可以通过TextWatcher去观察输入框中输入的内容,从而对EditText输入的内容进行控制。
package com.demos.edittext;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;import android.widget.Toast;import com.demos.activity.R;public class EditTextDemo extends Activity {EditText mEditText;TextView mTextView;@Overrideprotected void onCreate(Bundle savedInstanceState) {// TODO Auto-generated method stubsuper.onCreate(savedInstanceState);setContentView(R.layout.edittextdemos);mTextView = (TextView) findViewById(R.id.tv);mEditText = (EditText) findViewById(R.id.et);mEditText.addTextChangedListener(mTextWatcher);}TextWatcher mTextWatcher = new TextWatcher() { private CharSequence temp; private int editStart ; private int editEnd ; private int max = 10; @Override public void beforeTextChanged(CharSequence s, int arg1, int arg2, int arg3) { temp = s; } @Override public void onTextChanged(CharSequence s, int arg1, int arg2, int arg3) { mTextView.setText(s); } @Override public void afterTextChanged(Editable s) { editStart = mEditText.getSelectionStart(); editEnd = mEditText.getSelectionEnd(); Log.e("editStart", editStart+""); Log.e("editEnd", editEnd+""); int count = countChinese(temp.toString()); if ((temp.length() + count) > max) { Toast.makeText(EditTextDemo.this, "你输入的字数已经超过了限制!", Toast.LENGTH_SHORT) .show(); s.delete(editStart-1, editEnd); int tempSelection = editStart; mEditText.setText(s); mEditText.setSelection(tempSelection); } } }; /** * 计算字符串中中文字符数 * @param strName * @return */int countChinese(String strName){int count = 0;char[] ch = strName.toCharArray();for (int i = 0; i < ch.length; i++) {char c = ch[i];if (isChinese(c)) {count ++;}}return count;}private static final boolean isChinese(char c) {Character.UnicodeBlock ub = Character.UnicodeBlock.of(c);if (ub == Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS|| ub == Character.UnicodeBlock.CJK_COMPATIBILITY_IDEOGRAPHS|| ub == Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS_EXTENSION_A|| ub == Character.UnicodeBlock.GENERAL_PUNCTUATION|| ub == Character.UnicodeBlock.CJK_SYMBOLS_AND_PUNCTUATION|| ub == Character.UnicodeBlock.HALFWIDTH_AND_FULLWIDTH_FORMS) {return true;}return false;}}
- EditText输入字符控制(二)
- EditText输入字符数控制
- EditText 输入控制,用InputFilter过滤表情、特殊字符
- 限制EditText输入字符
- android同时控制EditText输入字符个数和禁止特殊字符输入的方法
- android如何同时控制EditText输入字符个数和禁止特殊字符输入?
- EditText 输入内容控制
- EditText控制输入格式
- 自定义控件--史上最简单!EditText多行输入并控制最大输入字符,显示剩余输入字符
- 捕捉Edittext的 输入字符
- EditText 禁止输入中文字符
- EditText输入字符变化事件
- EditText 禁止输入中文字符
- 禁止EditText输入特殊字符
- android edittext InputFilter 输入控制
- EditText输入最大字数控制
- 安卓控件使用系列6:EditText控制输入的字符范围
- EditText限制输入字符类型和限制输入字符数
- jquery表单验证实例 非常好
- Java/JSP中文乱码问题
- Servlet文件下载
- 3DS Max建模 植物的触碰效果
- epo.c
- EditText输入字符控制(二)
- C#语法
- 链表逆序
- hello world程序
- js去除字符串前后空格的方法
- tst1
- 文件注释符号
- 文件上传与中文乱码问题
- MySQL mysqld 5.6.2-m5 所有 配置选项