关于EditText的android:maxLength属性的注意事项

限制EditText输入范围的多种方法 本文介绍了三种在Android开发中限制EditText输入范围为1到100的方法:1) 使用InputFilter接口实现自定义过滤逻辑;2) 通过XML设置inputType和maxLength属性进行基础限制;3) 添加TextWatcher监听文本变化并进行验证。这些方法可以单独或组合使用,以确保用户输入的有效性,提升应用数据的准确性和用户体验。开发者应根据具体需求选择合适的方法,同时要注意避免重复inflate视图的问题。 阅读详情

      哈哈,一直以为在xml布局文件中对EditText添加 android:maxLength="30";属性是控制EditText字符数的。想当然的以为一个中文占2个字符,一个英文占1个字符。结果的结果当然不是了。

确切的说来android:maxLength="30"是对EditText的字数进行控制的。不管中文还是英文。都是30个字。这下麻烦了,查了整个API就没发现有真正是对字符进行控制的。最后发现只能用自定义的InputFilter来实现。

下面附上源代码:由Jerome_Song提供:http://blog.youkuaiyun.com/songzhiyong1121/article/details/8758902

package com.example.inputfilterdemo;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

import android.app.Activity;
import android.os.Bundle;
import android.text.Editable;
import android.text.InputFilter;
import android.text.Spanned;
import android.text.TextWatcher;
import android.util.Log;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;

/**
 * 
 * ClassName:MainActivity
 * 
 * @author Jerome Song
 * @version
 * @since Ver 1.1
 * @Date 2013 2013-4-4 下午2:55:42
 * 
 * @see
 */
public class MainActivity extends Activity {

	private EditText etTest;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		init();
	}

	private void init() {
		etTest = (EditText) findViewById(R.id.et_test);
		InputFilter[] filters = { new NameLengthFilter(16) };
		etTest.setFilters(filters);
	}

	private class NameLengthFilter implements InputFilter {
		int MAX_EN;// 最大英文/数字长度 一个汉字算两个字母
		String regEx = "[\\u4e00-\\u9fa5]"; // unicode编码,判断是否为汉字

		public NameLengthFilter(int mAX_EN) {
			super();
			MAX_EN = mAX_EN;
		}

		@Override
		public CharSequence filter(CharSequence source, int start, int end,
				Spanned dest, int dstart, int dend) {
			int destCount = dest.toString().length()
					+ getChineseCount(dest.toString());
			int sourceCount = source.toString().length()
					+ getChineseCount(source.toString());
			if (destCount + sourceCount > MAX_EN) {
				Toast.makeText(MainActivity.this, getString(R.string.count),
						Toast.LENGTH_SHORT).show();
				return "";

			} else {
				return source;
			}
		}

		private int getChineseCount(String str) {
			int count = 0;
			Pattern p = Pattern.compile(regEx);
			Matcher m = p.matcher(str);
			while (m.find()) {
				for (int i = 0; i <= m.groupCount(); i++) {
					count = count + 1;
				}
			}
			return count;
		}
	}

}

另外,再附上一篇比较有意思的区别maxEms和maxLength的文章。写的很生动哈哈。

Android 开发者,你真的会用textview(maxEms和maxLength)的属性吗?

Android应用开发中限制EditText输入字符数的实践 本文还有配套的精品资源,点击获取 简介:在Android开发中,限制用户在EditText控件中输入的字符数量是常见的需求。本文介绍了如何通过XML的 maxLength 属性和在代码中使用 TextWatcher 接口以及自定义 EditText 类来实现这一功能,从而确保用户输入不超出预设限制,维护界面的整洁并符合业务逻辑。 ... 阅读详情

相关推荐

实现Android EditText的字数限制与剩余字数提示

在Android开发中,是一个接口,用于监听文本变化事件。它主要被用于EditText组件的文本输入监听,能够提供文本变化前后的信息,从而允许开发者在文本变化时执行特定的操作,比如动态更新剩余字数提示、验证输入内容的合法性等。

weixin_30633869的博客 1059

Android EditText java 设置 maxLength

我们在开发过程,经常会遇到EditText 设置可输入内容长度,但是发现java代码没有set方法,通过源码,我们发现InputFilter的妙用所在。 在TextView中我们发现maxLength默认值为-1,并且当mxLength大于等于0才会设置LengthFilter if (maxlength >= 0) { setFilters(new InputFilter[] { new InputFilter.LengthFilter(maxlength) }); } else {

qq_21467035的博客 3301

python刷B站播放量

首先,我们要知道B站播放量计算方法:不同的IP只能算一次,如果点一下就关掉,会出现播放完成度很低的情况,反而不利。 所以我们要做的是:不停换IP地址打开视频播放页,最好能看完视频。 下面是实现方法: 获取某一个网页上的所有代理IP,返回一个IP列表: def get_ip_list(url, headers): web_data = requests.get(url, headers=headers) soup = BeautifulSoup(web_data.text, 'lxml

HGGshiwo的博客 1万+

EditText的maxLength属性

限制Editext 输入字符的大小:    在xml中:          android:maxLength=“number”   在代码中:        EditText  editText;       InputFilter filterArray = new  InputFilter[1];       filterArray[0] = new InputFilter.Le

cxfamq的专栏 752

TS808效果器制作教程

TS808效果器制作教程 可以在立创商城购买到大部分的电阻电容和IC,音频接口,踩钉,电位器和电源接口可以去某宝看看都买得到的。链接https//pan.baidu.com/s/1QId1eIE3fJ2u5NLBSISvGA。安装过程过于繁琐,把所有元器件按照图纸焊接完成就可以调试了,祝你们成功!这是TS808经典效果器制作过程的记录。IC是JRC4558。...

qq_18948149的博客 3423

ESP32S3 Korvo2V3四通道AEC配置实战:基于AFE的回声消除优化

本文详细介绍了在ESP32S3 Korvo2V3平台上配置四通道AEC(回声消除)的实战经验。通过AFE算法优化和硬件连接调试,实现高质量回声消除,显著提升智能音箱和会议设备的语音交互体验。重点解析了四通道配置、数据格式对齐和参数调优等关键技术要点。

elastic6hunter的博客 932

Android的EditText属性android:maxLength失效

Android EditText禁止输入Emoji后设置android:maxLength失效的问题 http://192.168.5.207/nbzhgl/a/login editText.setFilters(new InputFilter[]{new InputFilter.LengthFilter(20)}); 即限定最大输入字符数为20

舒小羽的博客 1700

AI驱动视频剪辑自动化:cutcli命令行工具重塑工作流

视频剪辑自动化是提升内容生产效率的关键技术,其核心原理在于通过程序化指令替代手动操作,将创意执行过程代码化。这项技术的价值在于能够将创作者从重复性劳动中解放,实现批量化、标准化的视频内容生产,尤其适用于社交媒体运营、产品宣传等高频产出场景。通过封装专业软件(如剪映/CapCut)的底层草稿格式,自动化工具在保证工业级渲染质量的同时,提供了可编辑的中间态,为AI智能体(Agent)与生产工具的结合提供了清晰接口。本文以cutcli为例,深入探讨了如何通过命令行工具和AI助手,构建从自然语言指令到可编辑视频草稿

weixin_27210125的博客 1059

文本输入编辑框 EditText

android Editext使用

威威的博客 5599

qcc514x-qcc304x调试笔记

qcc514x-qcc304x调试笔记-1-QCC514x系列 qcc514x-qcc304x调试笔记-2-开发环境搭建 qcc514x-qcc304x调试笔记-3-如何修改蓝牙名称 qcc514x-qcc304x调试笔记-4-如何修改蓝牙地址 qcc514x-qcc304x调试笔记-5-如何区分左右耳 qcc514x-qcc304x调试笔记-6-PIO相关操作 ...

leezs的博客 1244

第25节:cesium 地形开挖综合实例-地下管网(含源码+视频)

地图开挖综合示例,包括底图切换,绘制开挖区域,移除开挖区域,影藏地图等等。

qq_29384639的博客 1781

Android: maxEms maxLength有什么区别

在Android中,`EditText` 控件的 `maxEms` 和 `maxLength` 属性是用于限制输入文本长度的两个不同的属性。

m0_59162559的博客 2628

想重装OpenClaw?先执行这4步彻底卸载,避免配置冲突

在重装OpenClaw之前,彻底卸载是非常重要的一步。如果不彻底卸载,可能会导致: - 残留的配置文件与新安装的版本冲突 - 旧的依赖包干扰新的安装过程 - 服务冲突导致启动失败 - 数据混乱影响系统稳定性

一键难忘的博客 1043

Android EditText限制输入长度

Android EditText限制输入长度

soulboy1111的博客 1万+

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

uni-app x textarea 多行输入框组件完全指南:属性、事件、原生 View 获取与键盘上推实践

> 本文以 uni-app x 官方组件文档 [docs/component/textarea.md](https://link.gitcode.com/i/3d14564e37827dcadb8da8b02cc09904) 为骨架,结合开源仓库 [uni-app](https://link.gitcode.com/i/83caff9e5d8bea94a045aceb221fdab3) 内 `un

gitblog_00689的博客 618

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

Android EditText输入限制及字符编码

EditText限制长度一般会选择在xml中使用android:maxLength属性,但是maxLength属性限制的是输入的字符的长度,而不是字节长度,可以自己实现InputFilter 接口来实现相应功能。

特立独行的博客 3085

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

EditText中文英文长度限制

如果将EditText的输入长度设置为N个字符,则有如下两种方式: 1.在xml布局文件中对EditText添加 android:maxLength=“N”,比如; <EditText android:id="@+id/et_test" android:layout_width="match_parent" android:layout_height="wrap_content" android:maxLength="16" />

冬瓜去哪儿的博客 793

EditeText的maxlength中文、字符长度限制

一直以为在xml布局文件中对EditText添加 android:maxLength="30";属性是控制EditText字符数的。想当然的以为一个中文占2个字符,一个英文占1个字符。结果的结果当然不是了。 确切的说来android:maxLength="30"是对EditText的字数进行控制的。不管中文还是英文。都是30个字。这下麻烦了,查了整个API就没发现有真正是对字符进行控制的。最

啊迪 5003

Android开发中为EditText的输入长度设置

一. 在xml中设置 android:maxLength="11" 表示输入最大字数为11,一般配合使用 android:singleLine="true" 表示单行文本显示 二. 在java中设置

kaolagirl的博客 1280

EditText动态限制输入最大字符使用自定义InputFilter

需要限制edittext动态输入最大字节,因不同语言单个文字占用字节不一致,所以原生InputFilter无法满足。下需要大于规定字节数时保持之前的输入,小于规定字节数时保持输入。

geniushorse的博客 800

android代码设置maxlength,android-使用maxLength使用3个点结束TextView

android-使用maxLength使用3个点结束TextView我的布局中有一个TextView,它是layout_width中的wrap_content。 最多限制为15个字符,因此我正在使用maxLength。我需要以3个点(...)结束此TextView,并且仅当我使用dp给layout_width提供固定大小时才会发生,这是我不想做的事情。我知道可以通过代码做到这一点,并在第15个字符...

weixin_29534399的博客 2367

浅谈EditText几个实用技巧

浅谈EditText几个实用技巧EditText作为输入文本框,继承自TextView,是App中一般必不可少的控件。上次多功能计算器App项目中涉及到单位转换的功能,就用到两个EditText进行单位互相换算。我就把项目中掌握的几个实用技巧拿出来分享给大家,希望对大家能有所触类。

loy_ouyang的博客 341

常用组件:android的输入组件EditText

本文的主要内容是EditText输入框的基本api介绍,前面的textView是一个单纯用于显示的view,而EditText是一个允许用户输入文字的可交互组件,让界面可以修改了! 基本代码示例为: <EditText android:inputType="date" android:l...

android开发入门学习 1800
上一篇: Android获取TextView行数方法getLineCount()返回值为0
下一篇: 2013最新Android常用的工具类整理
极客公园
博客等级 码龄15年 45粉丝 38原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值