输入框字数限制+动态提示:10个汉字或20个字符的问题

需求:
EditText输入框,要求输入10个汉字,或者20个字符,支持中英文混输。当输入框内数据满足条件时,弹出Toast进行提示。
实现:
     我是通过TextWatcher的方式,来进行实现的。即使一次粘贴很多文字也不会报错。

废话不多言,直接上代码:


EditTextLimitTextWatcher:
/*** 对输入框进行字数限制的textWatcher,支持中英文混输,超出字符数会弹出Toast* * @author Lento*/
public class EditTextLimitTextWatcher implements TextWatcher {private final int mMaxLenth;private String mToastText;private Context mContext;private Toast mToast;private EditText mEditText;private int mCharCount;/*** @param mContext* @param mEditText: 需要监视的输入框* @param mMaxLenth :支持输入的最大字符数(1个汉字为2个字符,1个英文字母为1个字符)* @param mToastText: 输入字符数超出最大值时的toast文字提示,为null时,不提示*/public EditTextLimitTextWatcher(Context mContext, EditText mEditText, int mMaxLenth,String mToastText) {this.mContext = mContext;this.mMaxLenth = mMaxLenth;this.mToastText = mToastText;this.mEditText = mEditText;}/*** 避免多次重复弹出toast* * @param text*/private void showToast(String text) {if (mToast == null) {mToast = Toast.makeText(mContext, text, Toast.LENGTH_SHORT);} else {mToast.setText(text);mToast.setDuration(Toast.LENGTH_SHORT);}mToast.show();}@Overridepublic void onTextChanged(CharSequence s, int start, int before, int count) {mCharCount = before + count;if (mCharCount > mMaxLenth) {mEditText.setSelection(mEditText.length());}try {mCharCount = mEditText.getText().toString().getBytes("GBK").length;} catch (UnsupportedEncodingException e) {e.printStackTrace();}}@Overridepublic void beforeTextChanged(CharSequence s, int start, int count, int after) {}@Overridepublic void afterTextChanged(Editable s) {if (mCharCount > mMaxLenth) {CharSequence subSequence = null;for (int i = 0; i < s.length(); i++) {subSequence = s.subSequence(0, i);try {if (subSequence.toString().getBytes("GBK").length == mCharCount) {mEditText.setText(subSequence.toString());break;}} catch (UnsupportedEncodingException e) {e.printStackTrace();}}if (!TextUtils.isEmpty(mToastText)) {showToast(mToastText);}String androidVersion = android.os.Build.VERSION.RELEASE;if (androidVersion.charAt(0) >= '4') {mEditText.setText(subSequence.toString());}}}
}

 使用:MainActivity
 
public class MainActivity extends Activity {private EditText mEditText;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);mEditText = (EditText)findViewById(R.id.et);EditTextLimitTextWatcher mTextWatcher = new EditTextLimitTextWatcher(this, 20, "字数超出限制了!");mEditText.addTextChangedListener(mTextWatcher);}

XML布局文件:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"android:paddingBottom="@dimen/activity_vertical_margin"android:paddingLeft="@dimen/activity_horizontal_margin"android:paddingRight="@dimen/activity_horizontal_margin"android:paddingTop="@dimen/activity_vertical_margin"tools:context=".MainActivity" ><EditTextandroid:id="@+id/et"android:layout_width="wrap_content"android:layout_height="wrap_content" /></RelativeLayout>

效果,上图:
当超出10个汉字,或者20个字符时:




参考文章:
http://blog.csdn.net/scyatcs/article/details/8798810
http://blog.csdn.net/liujianminghero/article/details/7092236 

PS:
已知的小Bug:当输入一段文字后,把光标移至文字中间,输入文字后,光标都会移至最末。有哪位童鞋可以解决的话,恳请指出,拜谢。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/52439.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

微信小程序文本框限制输入字数

效果图 wxml代码 <view style"border: 1px solid #FFA6A6; border-radius: 10px;"><textarea placeholder-class"place-holder" placeholder"请从以下四个方面填写求求职简介 1. 教育背景介绍&#xff0c;如学校专业描述、个人学习成绩奖学…

Python数据分析学习路线个人总结,建议收藏!

数据分析人人都有必要掌握一点&#xff0c;哪怕只是思维也行。下面探讨Python数据分析需要学习的知识范畴&#xff0c;结合自己的经历和理解&#xff0c;总结的学习大纲&#xff0c;有些章节带有解释&#xff0c;有些没有。当然&#xff0c;关于学习范畴&#xff0c;可能每个人…

如何修改电脑的ip地址

第一步&#xff1a;点击“本地连接” 第二步&#xff1a;点击“属性” 第三步&#xff1a;点击“Internet 协议版本4”&#xff0c;如下图所示 第四步&#xff1a;按下图配置自己的ip地址和dns服务器

更换IP地址方式简介。

IP地址是判定唯一性的一个重要指标&#xff0c;换IP地址跟IG没关系 如果对IP归属地没有要求的&#xff0c;使用2G或3G数据流量上网的情况下&#xff0c;飞行模式一开一关&#xff0c;一般就可以实现更换IP地址&#xff0c;如果是Wifi环境&#xff0c;那么把宽带进线路由一开一关…

怎样更改计算机ip,怎么快速修改电脑ip地址

很多人为了方便电脑与电脑之间联机&#xff0c;都会自己修改电脑ip地址&#xff0c;方便自己记住&#xff0c;下面是学习啦小编整理的快速修改电脑ip地址的方法&#xff0c;供您参考。 快速修改电脑ip地址的方法 首先打开运行框&#xff0c;电脑 windowsR(建议以管理员身份运行…

修改IP地址

手动修改IP感觉很麻烦&#xff0c;今天晚上自己研究了下&#xff0c;通过脚本语言来实现自动修改&#xff0c;来分享下。 源码下载https://download.csdn.net/download/github_32213451/10609248 操作方法&#xff1a; 1、新建txt文档。 2、复制下面的代码&#xff0c;保存&…

什么是IP地址,怎么查看修改IP地址?

IP地址&#xff0c;只要是连接到互联网上的任何设备&#xff0c;终端&#xff0c;都会有一个IP地址&#xff0c;IP地址就相当于我们每个人都有一张身份证一样&#xff0c;有了这个地址谁就就可以在互联网访问任何东西&#xff0c;他的格式分为四段最小的IP地址为0.0.0.0最大的地…

Linux下修改ip地址,网关

1. 查看ip地址 命令: ifconfig 2. 修改ip的配置文件 编辑/etc/sysconfig/network-scripts/目录下的ifcfg-ens32文件 方便粘贴: IPADDR“192.168.100.196” PREFIX“24” GATEWAY“192.168.100.1” DNS1“144.144.144.144” IPV6_PRIVACY“no” 3. 重启network服务 命令: sys…

电脑IP地址查看及修改

笔者今天用以太网模块w5500&#xff0c;发现ping不通&#xff0c;检查了代码也没发现问题。 查明原因之后&#xff1a;原来是连接电脑的拓展坞没有识别出网线。总结一下查看/修改电脑ip&#xff08;查看到步骤2即可&#xff09;的方法&#xff1a; 为了节约打字时间及方便读者…

windows命令修改IP地址

经常改静态IP地址测试&#xff0c;每次点麻烦&#xff0c;找了下命令操作速度杠杠的 1、WINX选择Windows终端&#xff08;管理员&#xff09; 2、输入ipconfig查看网卡名称 3、输入 netsh interface ip set address "以太网 2" sourcestatic addr192.168.2.20 ma…

修改电脑的IP地址

文章目录 背景修改电脑IP地址 背景 早晨发现笔记本电脑连不上服务器了&#xff0c;在moba上也不行&#xff0c;vscode也不行。ipconfig发现电脑的网段是1&#xff0c;于是听从建议把电脑的网段改成0&#xff0c;其实就是自己改一下电脑的IP地址&#xff0c;把192.168.1.169改成…

怎样更改计算机ip,怎样修改电脑IP地址?

怎样修改电脑IP地址&#xff1f;&#xff1f; 相信我们的日常的生活中都会接触电脑&#xff0c;电脑给大家的生活带来了很多的便利&#xff0c;同时也开阔了大家的视野&#xff0c;有时也会碰到烦恼&#xff0c;例如有网友碰到了电脑无网络的情况&#xff0c;这时大家会需要更改…

提测邮件应该这样写

版权声明&#xff1a; 本公众号发布的所有文章&#xff0c;均属于原创&#xff0c;版权归本公众号所有。 允许有条件转载&#xff0c;转载请附带底部二维码。 一、先聊几句 一般产品的版本迭代都是一版版的在推进&#xff0c;每一个版本之间都要经历产品需求确定、开发、测试、…

如何避免重复提交问题

一、简述 所谓幂等性&#xff0c;就是一个接口&#xff0c;多次发起同一个请求&#xff0c;该接口得保证结果是准确的&#xff0c;比如不能多扣款、不能多插入一条数据、不能将统计值多统计 1。这就是幂等性。 1️⃣在编程中常见的幂等 ①select 查询天然幂等 ②delete 删除…

生物信息学与智能信息处理2021年学术会议(BIIP2021):会议总结

前言&#xff1a;参加了2021年5月21日至23日于武汉举办的生物信息学与智能信息处理2021年会议&#xff0c;使得我对于生物信息有了更深入的了解。于是&#xff0c;在本文中记录下心得与体会。 一、会议主题 本次会议大主题为生物信息学和智能信息处理&#xff0c;可以细分为三…

均匀”的本质------贝特朗悖论的思考

摘 要 贝特朗悖论是概率论中的著名悖论。文章对古典概型中的无差别原则以及引起争议的贝特朗悖论做出了简要解释和介绍&#xff0c;并通过线性条件修正对悖论的经典计算方法进行驳斥&#xff0c;最后肯定了悖论在数学发展历程中的重要意义。 关键词 贝特朗悖论 无差别原则 概率…

剧情很有趣:安全专家被骗记

导读&#xff1a;这是来自一篇安全宝的文章&#xff0c;我觉得挺有意思的。在现实生活中我就接到过好几次类似的诈骗电话。本文故事性很强&#xff0c;有可读性&#xff0c;发出来也是给大伙提个醒&#xff0c;剧情很有趣。 近 日&#xff0c;国内第三方安全权威公司资深网络工…

云米预计Q3营收同比下降三成,陈小平对未来增长没信心?

8月25日&#xff0c;纳斯达克上市公司云米&#xff08;Nasdaq:VIOT&#xff09;发布了截至6月30日的2021年第二季度财报。财报显示&#xff0c;云米的营收规模开始出现下滑。同时&#xff0c;云米预计2021年第三季度的营收将大幅减少。 贝多财经发现&#xff0c;云米还在财报中…

云米发行区间9到11美元 IPO后陈小平投票权为66%

雷帝网 雷建平 9月12日报道 小米旗下生态链家电供应商云米昨日更新招股书&#xff0c;IPO价格区间为9-11美元&#xff0c;最高募集资金为1.44亿美元。 IPO前&#xff0c;云米创始人陈小平通过Viomi Limited持股为41.3%&#xff0c;加上代持共有50.7%股权&#xff0c;为公司最大…

专访云米CEO陈小平:小米生态链模式的路会越走越宽

雷帝网 雷建平 9月26日报道 小米净水器生产商云米昨日在美国上市&#xff0c;宣告中国“家庭物联网第一股”的诞生。云米上市&#xff0c;也意味着继华米之后&#xff0c;又一家小米生态链企业今年在美国上市。 云米CEO陈小平在上市现场接受雷帝触网创始人雷建平专访时表示&…