【转】android 中如何限制 EditText 最大输入字符数

原文网址:http://blog.csdn.net/fulinwsuafcie/article/details/7437768

方法一:

在 xml 文件中设置文本编辑框属性作字符数限制

如:android:maxLength="10" 即限制最大输入字符个数为10

 

方法二:

在代码中使用InputFilter 进行过滤

//editText.setFilters(new InputFilter[]{new InputFilter.LengthFilter(20)}); 即限定最大输入字符数为20

 

 

[java] view plaincopy
  1. public class TextEditActivity extends Activity {  
  2.     /** Called when the activity is first created. */  
  3.     @Override  
  4.     public void onCreate(Bundle savedInstanceState) {  
  5.         super.onCreate(savedInstanceState);  
  6.         setContentView(R.layout.main);  
  7.           
  8.         EditText editText = (EditText)findViewById(R.id.entry);  
  9.         editText.setFilters(new InputFilter[]{new InputFilter.LengthFilter(20)});  
  10.     }  
  11. }  


方法三:

利用 TextWatcher 进行监听

 

[java] view plaincopy
  1. package cie.textEdit;  
  2.   
  3. import android.text.Editable;  
  4. import android.text.Selection;  
  5. import android.text.TextWatcher;  
  6. import android.widget.EditText;  
  7.   
  8. /* 
  9.  * 监听输入内容是否超出最大长度,并设置光标位置 
  10.  * */  
  11. public class MaxLengthWatcher implements TextWatcher {  
  12.   
  13.     private int maxLen = 0;  
  14.     private EditText editText = null;  
  15.       
  16.       
  17.     public MaxLengthWatcher(int maxLen, EditText editText) {  
  18.         this.maxLen = maxLen;  
  19.         this.editText = editText;  
  20.     }  
  21.   
  22.     public void afterTextChanged(Editable arg0) {  
  23.         // TODO Auto-generated method stub  
  24.           
  25.     }  
  26.   
  27.     public void beforeTextChanged(CharSequence arg0, int arg1, int arg2,  
  28.             int arg3) {  
  29.         // TODO Auto-generated method stub  
  30.           
  31.     }  
  32.   
  33.     public void onTextChanged(CharSequence arg0, int arg1, int arg2, int arg3) {  
  34.         // TODO Auto-generated method stub  
  35.         Editable editable = editText.getText();  
  36.         int len = editable.length();  
  37.           
  38.         if(len > maxLen)  
  39.         {  
  40.             int selEndIndex = Selection.getSelectionEnd(editable);  
  41.             String str = editable.toString();  
  42.             //截取新字符串  
  43.             String newStr = str.substring(0,maxLen);  
  44.             editText.setText(newStr);  
  45.             editable = editText.getText();  
  46.               
  47.             //新字符串的长度  
  48.             int newLen = editable.length();  
  49.             //旧光标位置超过字符串长度  
  50.             if(selEndIndex > newLen)  
  51.             {  
  52.                 selEndIndex = editable.length();  
  53.             }  
  54.             //设置新光标所在的位置  
  55.             Selection.setSelection(editable, selEndIndex);  
  56.               
  57.         }  
  58.     }  
  59.   
  60. }  


对应的 activity 部分的调用为:

 

 

[java] view plaincopy
  1. package cie.textEdit;  
  2.   
  3. import android.app.Activity;  
  4. import android.os.Bundle;  
  5. import android.text.InputFilter;  
  6. import android.widget.EditText;  
  7.   
  8. public class TextEditActivity extends Activity {  
  9.     /** Called when the activity is first created. */  
  10.     @Override  
  11.     public void onCreate(Bundle savedInstanceState) {  
  12.         super.onCreate(savedInstanceState);  
  13.         setContentView(R.layout.main);  
  14.   
  15.         EditText editText = (EditText) findViewById(R.id.entry);  
  16.         editText.addTextChangedListener(new MaxLengthWatcher(10, editText));  
  17.   
  18.     }  
  19. }  

限制输入字符数为10个

 

main.xml 文件

 

[html] view plaincopy
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"  
  3.     android:layout_width="fill_parent"  
  4.     android:layout_height="fill_parent">  
  5.     <TextView  
  6.         android:id="@+id/label"  
  7.         android:layout_width="fill_parent"  
  8.         android:layout_height="wrap_content"  
  9.         android:text="Type here:"/>  
  10.     <EditText  
  11.         android:id="@+id/entry"  
  12.         android:singleLine="true"  
  13.         android:layout_width="fill_parent"  
  14.         android:layout_height="wrap_content"  
  15.         android:background="@android:drawable/editbox_background"  
  16.         android:layout_below="@id/label"/>  
  17.     <Button  
  18.         android:id="@+id/ok"  
  19.         android:layout_width="wrap_content"  
  20.         android:layout_height="wrap_content"  
  21.         android:layout_below="@id/entry"  
  22.         android:layout_alignParentRight="true"  
  23.         android:layout_marginLeft="10dip"  
  24.         android:text="OK" />  
  25.     <Button  
  26.         android:layout_width="wrap_content"  
  27.         android:layout_height="wrap_content"  
  28.         android:layout_toLeftOf="@id/ok"  
  29.         android:layout_alignTop="@id/ok"  
  30.         android:text="Cancel" />  
  31. </RelativeLayout>  


效果为输入了10个字符后,光标停在末尾

 



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

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

相关文章

【51单片机快速入门指南】4.3.3: MPU6050使用Mahony AHRS算法实现六轴姿态融合获取四元数、欧拉角

目录源码Mahony_6.cMahony_6.h使用方法测试程序main.c效果STC89C516 32MHz Keil uVision V5.29.0.0 PK51 Prof.Developers Kit Version:9.60.0.0 上位机&#xff1a;Vofa 1.3.10 移植自MPU6050姿态解算——Mahony互补滤波 —— 大写的小写字母 加入了输入数据范围的自动处理…

linux文件系统及bash基础特性

linux文件系统 一、根文件系统 linux被识别的第一个被称为根之间关联的文件系统叫做根文件系统&#xff08;rootfs&#xff09;&#xff0c;其他分区要想被读到&#xff0c;需要挂载到根目录的某个挂载点&#xff08;根的子目录&#xff09;上。根文件系统至关重要&#xff0c;…

【51单片机快速入门指南】4.3.4: MPU6050使用Madgwick AHRS算法实现六轴姿态融合获取四元数、欧拉角

目录源码Madgwick_6.cMadgwick_6.h使用方法测试程序main.c效果STC89C516 32MHz Keil uVision V5.29.0.0 PK51 Prof.Developers Kit Version:9.60.0.0 上位机&#xff1a;Vofa 1.3.10 移植自AHRS —— LOXO&#xff0c;算法作者&#xff1a;SOH Madgwick 源码 为了避免所用R…

Hybris商品图片导入与压缩有关的配置.

1. 在电脑上安装 ImageMagick 软件&#xff08;windows平台还需要安装VC&#xff09;&#xff0c;下载路径&#xff1a;http://www.imagemagick.org/script/download.php#windows 在local.properies文件配置安装路径和配置文件路径&#xff1a; Windows版本的&#xff0c;安装…

poj 2507Crossed ladders 计算几何

链接&#xff1a;http://poj.org/problem?id2507 题意&#xff1a;哪个直角三角形&#xff0c;一直角边重合&#xff0c; 斜边分别为 X, Y&#xff0c; 两斜边交点高为 C &#xff0c; 求重合的直角边长度~ 思路&#xff1a; 设两个三角形不重合的两条直角边长为 a &#xff0…

【机器视觉学习笔记】VS2015 安装 opencv_contrib并测试

目录opencv_contrib的获取主要工具编译 opencv编译 opencv_contribVisual Studio 编译配置新项目的环境添加包含目录添加库目录配置调试环境添加依赖项测试平台&#xff1a;Windows 10 20H2 Visual Studio 2015 opencv_contrib-3.4.12 参考文章&#xff1a; 添加OpenCV_contr…

Windows Server 2012 R2 或 2016 无法安装 .Net 3.5.1

租用阿里云ECS服务器的用户使用 Windows Server 2012 R2 或 Windows Server 2016 64位系统&#xff0c;发现在安装 .net framework 3.5.1 时报错&#xff0c;报错内容如下&#xff1a; 原因分析 找不到安装源文件。 解决办法 可以通过如下 PowerShell 脚本进行安装&#xff1a;…

Concept3D推出交互式3D地图平台

对于活动组织者而言&#xff0c;能够在不必实际旅行的情况下参观活动地点的想法非常具有吸引力&#xff0c;特别是对于日程安排繁忙的人员。Concept3D通过其交互式地图和身临其境的虚拟导览软件实现了这一点。 Concept3D平台的首要位置之一是棕榈泉会议中心&#xff0c;该中心支…

【机器视觉学习笔记】OpenCV C++ 调用笔记本摄像头

目录测试程序实验现象平台&#xff1a;Windows 10 20H2 Visual Studio 2015 opencv_contrib-3.4.12 转自【opencv七】利用opencv调用电脑摄像头 —— yuanCruise 测试程序 #include <opencv2/opencv.hpp> #include <iostream>using namespace cv;int main() {n…

深入分析 Java 中的中文编码问题

几种常见的编码格式 为什么要编码 不知道大家有没有想过一个问题&#xff0c;那就是为什么要编码&#xff1f;我们能不能不编码&#xff1f;要回答这个问题必须要回到计算机是如何表示我们人类能够理解的符号的&#xff0c;这些符号也就是我们人类使用的语言。由于人类的语言有…

APP图标生成工具

今天25学堂跟大家推荐一款非常有趣和简单的APP图标生成工具&#xff1a;Iconion Icon Generator&#xff08;iconion图标生成器&#xff09; 我们可以用它来创建美丽的扁平化图标&#xff0c;长投影图标&#xff0c;桌面图标&#xff0c;社会媒体图标和移动APP图标等&#xff0…

基本形态学算法

基本形态学算法为什么要做基本形态学算法的研究和实现&#xff1f;是因为形态学是一个非常有力&#xff0c;应用 广泛的工具&#xff0c;但同时也是研究不是很清楚的工具。往往一个恰到好处的变换&#xff0c;就能够省下许多的劳动。对此的分类和研究就显得非常有必要&#xff…

【51单片机快速入门指南】4.4:I2C 读取HMC5883L / QMC5883L 磁力计

目录硬知识简介操作模式HMC5883L连续测量模式单次测量模式闲置模式QMC5883L连续测量模式待命模式主要差异寄存器寄存器列表HMC5883LQMC5883L配置寄存器HMC5883L配置寄存器 A配置寄存器 B模式寄存器QMC5883L控制寄存器1控制寄存器2SET/RESET Period Register数据输出寄存器HMC58…

leaflet加载离线OSM(OpenStreetMap)

转载&#xff1a; https://www.cnblogs.com/RainyBear/p/6011832.html leaflet作为广为应用的开源地图操作的API,是非常受欢迎&#xff0c;轻量级的代码让使用者更容易操作。 废话不多说&#xff0c;下面直接给出范例。 首先在这个网站下载leaflet的压缩包&#xff0c;其中包括…

Nginx 实战(一) 集群环境搭建

Nginx是什么&#xff1f; Nginx ("engine x") 是一个高性能的 HTTP 和 反向代理 服务器&#xff0c;也是一个 IMAP/POP3/SMTP 代理服务器。一直纳闷这个X是怎么来的在网上查了查原来X代表很牛逼的样子&#xff0c;Nginx就是代表一个非常牛逼的引擎服务器系统&#xf…

【51单片机快速入门指南】4.4.1:python串口接收磁力计数据并进行最小二乘法椭球拟合

目录硬知识Python代码使用方法串口收集数据椭球拟合验证STC15F2K60S2 16.384MHz Keil uVision V5.29.0.0 PK51 Prof.Developers Kit Version:9.60.0.0 Python 3.8.11 (default, Aug 6 2021, 09:57:55) [MSC v.1916 64 bit (AMD64)] :: Anaconda, Inc. on win32 参考资料&…

MATLAB之基本语法之常用命令

1. whos&#xff08;或者who&#xff09; 可以查看command window的变量 当调试MATLAB程序时&#xff0c;该条命令经常用到&#xff01;&#xff01;&#xff01; 2. clc 清除命令窗口内容但是不清除变量 3. clear 清除命令窗口内容并且清除变量 4. …

【51单片机快速入门指南】4.4.2:Mahony AHRS 九轴姿态融合获取四元数、欧拉角

目录传感器的方向源码Mahony_9.cMahony_9.h使用方法测试main.c效果STC15F2K60S2 22.1184MHz Keil uVision V5.29.0.0 PK51 Prof.Developers Kit Version:9.60.0.0 上位机&#xff1a;Vofa 1.3.10 移植自MPU6050 获取角度理论推导(三)—9轴融合算法 —— shao15232_1 传感器…

BZOJ 2160 拉拉队排练

2160: 拉拉队排练 Description 艾利斯顿商学院篮球队要参加一年一度的市篮球比赛了。拉拉队是篮球比赛的一个看点&#xff0c;好的拉拉队往往能帮助球队增加士气&#xff0c;赢得最终的比赛。所以作为拉拉队队长的楚雨荨同学知道&#xff0c;帮助篮球队训练好拉拉队有多么的重要…

React Native获取设备信息组件

转载 https://www.jianshu.com/p/907b003835dc本文原创首发于公众号&#xff1a;ReactNative开发圈&#xff0c;转载需注明出处。这次介绍的获取移动设备信息的组件名叫&#xff1a;react-native-device-info&#xff0c;兼容IOS和安卓双平台&#xff0c;可以获取设备ID、设备品…