android EditText控制最大输入行数
网络摘抄,仅作记录学习
EditText在android开发中是一个经常用到的基础控件,功能也很强大,限制输入字符类型,字数什么的。但是最近在工作中遇到了需要控制editText最大可输入行数的要求。这个功能控件本身没有提供,EditText.setMaxLines函数只能控制控件的最大可视高度并不符合要求。要实现控制最大可输入行数势必要用到addTextChangedListener去监听控件中文本的变化,需要实现的函数有三个:
public void beforeTextChanged(CharSequence A, int B, int C,int D)
public void onTextChanged(CharSequence A, int B, int C, int D)
public void afterTextChanged(Editable A)
这个三个函数描述了editText控件的一次输入过程:
beforeTextChanged 字符串A中从索引B位置开始的C个字符将被D个字符替换
onTextChanged 字符串A中从索引B位置开始的C个字符刚刚被D个字符替换
afterTextChanged 控件中现在的字符
这里beforeTextChanged ,onTextChanged 这两个函数中是不能对控件内容进行重新的设定的,但是afterTextChanged 是可以递归的,当然要能正确的结束递归过程。
最大输入函数的控制:
EditText.addTextChangedListener
@Override
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
// TODO Auto-generated method stub
} @Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
// TODO Auto-generated method stub
} @Override
public void afterTextChanged(Editable s) {
// TODO Auto-generated method stub
int lines = editText.getLineCount();
// 限制最大输入行数
if (lines > MAXLINES) {
String str = s.toString();
int cursorStart = editText.getSelectionStart();
int cursorEnd = editText.getSelectionEnd();
if (cursorStart == cursorEnd && cursorStart < str.length() && cursorStart >= 1) {
str = str.substring(0, cursorStart-1) + str.substring(cursorStart);
} else {
str = str.substring(0, s.length()-1);
}
// setText会触发afterTextChanged的递归
editText.setText(str);
// setSelection用的索引不能使用str.length()否则会越界
editText.setSelection(editText.getText().length());
}
}
android EditText控制最大输入行数的更多相关文章
- Java50道经典习题-程序19 输入行数打印菱形图案
题目:根据用户输入的行数打印菱形图案,若用户传入的是为偶数则提示用户重新输入,例如输入数字7打印出如下菱形图案 * *** ************ ***** *** *分析:先把图形分 ...
- easyUI中datagrid控制获取指定行数的数据
直接上代码: var rows=$('#detail').datagrid('getRows');//获取所有当前加载的数据行 var row=rows[0];// 行数从 0 开始 项目中代码: v ...
- android EditText 只允许输入指定字符
实现只允许只入数字和字符 方法一:在XML文件中实现布局如下: <EditText android:layout_width="match_parent" android:l ...
- android EditText控制光标的位置
利用自定义键盘,需要手动删除编辑框中的文本时,会根据光标的位置来删除字符.那么,如何来控制光标呢,android为我们提供了哪些方法,来处理光标呢? 这里提供几个自己写的方法,根据这些方法可以满足在光 ...
- Android EditText手机号格式化输入XXX-XXXX-XXXX
先来效果图: 设置手机格式化操作只需要设置EditText的addTextChangedListener的监听,下面看代码 /*editText输入监听*/ et_activity_up_login_ ...
- Android studio如何显示代码行数
1.首先打开as:File-->Settings... 2.Editor-->General-->Appearence 3.右边show line numbers 4.依次点击app ...
- Android限定EditText的输入类型为数字或者英文(包括大小写),EditText,TextView只能输入两位小数
Android限定EditText的输入类型为数字或者英文(包括大小写) // 监听密码输入框的输入内容类型,不可以输入中文 TextWatcher mTextWatcher = new Tex ...
- Android EditText多行显示及所有属性
android:id="@+id/editSms" android:layout_width="fill_parent" android:layout_heig ...
- Android:EditText 属性
Android开发EditText属性 EditText 官网链接 EditText继承关系:View-->TextView-->EditText EditText 部分属性: XML 设 ...
随机推荐
- SQL 连表更新
现在数据如下: 需求如下: 要求 更新 Earnings 表中的Earnings字段 当 Table_2 KPI 大于等于1时 Earinings = KPI* 2000,否则等于 KPI* 1500 ...
- CQRS读写职责分离模式(Command and Query Responsibility Segregation (CQRS) Pattern)
此文翻译自msdn,侵删. 原文地址:https://msdn.microsoft.com/en-us/library/dn568103.aspx 通过使用不同的接口来分离读和写操作,这种模式最大化了 ...
- kubernetes1.5.2--部署dashboard服务
本文基于kubernetes 1.5.2版本编写 使用http方式访问api server的部署 cat dashboard-controller.yaml apiVersion: extension ...
- WEB将本地项目添加到git
前提下载好git bush1.找到对应的文件夹git init2.Windows下打开Git Bash$ ssh-keygen -t rsa -C "myaccount@example.co ...
- Windows API常用函数
转自:http://www.cnblogs.com/xiashengwang/p/4026259.html .NET中虽然类库很强,但还是有些时候功能有限,掌握常用的api函数, 会给我们解决问题提供 ...
- 发布android apk,Error running app: No target device found.
https://developer.android.com/studio/run/device.html\ 一台android设备不识别,android文档还挺全 需要安装usb驱动链接里有
- 模式识别hw2-------基于matconvnet,用CNN实现人脸图片性别识别
主要来源模式识别课程大作业,本文首先感谢当初的助教和一起完毕作业的队友 matconvnet在matlab下封装了CNN常见算法,网址http://www.vlfeat.org/matconvnet/ ...
- 【使用 DOM】理解 DOM
DOM(Document Object Model,文档对象模型)允许我们用 JavaScript 来探查和操作 HTML 文档里的内容.它对于创建丰富性内容而言是必不可少的一组功能. 1. 理解文档 ...
- MySQL5.7 基于二进制包的安装
1.MySQL5.7安装注意事项 1.在MySQL5.7中mysql_install_db已经不再推荐使用,建议改成mysqld-initialize 完成实力初始化.(mysql_install_d ...
- HBase 列族数量为什么越少越好
http://blog.csdn.net/r1soft/article/details/63253985 http://www.cnblogs.com/nucdy/p/5965113.html