Android 输入框限制字符输入数
有时候对Android的输入框有字符输入数量的限制,而且显示字符输入的数量。通过下面方式能够实现:
1.自己定义LimitNumEditText继承EditText
import android.content.Context;
import android.content.res.TypedArray;
import android.telephony.SmsMessage;
import android.text.Editable;
import android.text.InputFilter;
import android.text.TextWatcher;
import android.util.AttributeSet;
import android.widget.EditText; import us.pinguo.cc.R; /**
* Created by crab on 15-3-18.
*/
public class LimitNumEditText extends EditText {
private int mMaxLength;
private OnTextCountChangeListener mTextCountChangeListener; public LimitNumEditText(Context context) {
this(context, null);
} public LimitNumEditText(Context context, AttributeSet attrs) {
super(context, attrs);
TypedArray typedArray = context.obtainStyledAttributes(attrs, R.styleable.LimitNumEditText);
mMaxLength = typedArray.getInt(R.styleable.LimitNumEditText_maxLength, -1);
typedArray.recycle();
if (mMaxLength >= 0) {
setFilters(new InputFilter[]{new InputFilter.LengthFilter(mMaxLength)});
} else {
setFilters(new InputFilter[0]);
}
addTextChangedListener(null);
}
/**
* @return 返回限制输入的最大字符数量
*/
public int getLimitLength(){
return mMaxLength;
}
@Override
public void addTextChangedListener(final TextWatcher watcher) {
TextWatcher inner=new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
if(watcher!=null){
watcher.beforeTextChanged(s,start,count,after);
}
} @Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
int[] params= SmsMessage.calculateLength(s,false);
int use=params[1];
if(mMaxLength>=0 && mTextCountChangeListener!=null){
mTextCountChangeListener.onTextCountChange(use,mMaxLength);
}
if(watcher!=null){
watcher.onTextChanged(s,start,before,count);
}
} @Override
public void afterTextChanged(Editable s) {
if(watcher!=null){
watcher.afterTextChanged(s);
}
}
};
super.addTextChangedListener(inner);
} public LimitNumEditText(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
public void setOnTextCountChangeListener(OnTextCountChangeListener listener){
mTextCountChangeListener=listener;
}
/**
* 监听输入框字符变化
*/
public interface OnTextCountChangeListener{
/**
*
* @param use 输入字符赞据的大小
* @param total 限制输入数量的上线
*/
public void onTextCountChange(int use, int total);
}
2.改动res/values/attrs.xml文件,添加例如以下行
<attr name="maxLength" format="integer" />
</declare-styleable>
3.在布局文件里使用
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:algnText="http://schemas.android.com/apk/res-auto"
android:background="#FFFFFF"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<com.example.crab.mycameratest.LimitNumEditText
algnText:maxLength="20"
android:id="@+id/id_edit_text_test"
android:layout_width="match_parent"
android:layout_height="50dp"/>
</LinearLayout>
Android 输入框限制字符输入数的更多相关文章
- #首行输入数n,接下来输入n行数,以空格隔开
#首行输入数n,接下来输入n行数,以空格隔开 n = int(raw_input())# print nL = []for i in range(n): L.append([int(x) for x ...
- 解决Android studio 非法字符的问题
前言:今天遇到一个问题,从一个项目中把一些类拷贝到Android studio 里面,运行的时候,报错. 显示刚才拷贝的类中有非法字符,我又检查了一遍,发现类中没有非法字符. 在网上查到了,相关的解决 ...
- Android -- 重设字符并统计原字符以及修改字符的长度以及位置
1. 效果图
- android输入框显示在软键盘上边
有时候在界面需要输入的时候,如果输入框在界面的下方,软键盘弹出的时候会遮挡输入框界面,对用户的体验不是很好. 在网上找的别人的解决方案 首先: 清单文件里面配置:android:windowSoftI ...
- openfl更新2.0后,android输入法又不能输中文了
今天手贱更新了一下openfl,fd里面又各种报错.最伤心的是,之前修改MainView.java输入中文的方法现在居然失效了.还好这段时间研究c2dx,总算是能读能懂修改的那段代码,捣鼓了一下午,算 ...
- Android开发匹配字符笔记
Windows下的回车换行符是\r\n,而Linux下的回车换行符是\n 所以,在windows下可以用\r\n,而在linux下要用\n 并且还发现在linux下(既在android上开发)需要匹配 ...
- Android中判断字符是否为中文、韩文、日文
我们经常需要在程序中判断一个字符是否为CJK(Chinese.Japanese.Korean)语言的字符. 例如,在Contacts里面程序需要判断联系人姓名的所属语言. 今天为大家介绍一种NameS ...
- Android中检测字符编码(GB2312,ASCII,UTF8,UNICODE,TOTAL——ENCODINGS)方法(一)
package com.android.filebrowser; import java.io.*; import java.net.*; public class FileEncodingD ...
- 从键盘输入数,输出它们的平方值&判断是不是2的阶次方数
1.从键盘输入两个整数,然后输出它们的平方值和立方值 在Java中,没有像C语言那样有一个专供接受键盘输入值的scanf函数,所以一般的做法是从键盘输入一行字符,保存到字符串s中,再将字符组成的字符串 ...
随机推荐
- arXiv 2015深度学习年度十大论文
由康奈尔大学运营维护着的arXiv网站,是一个在学术论文还未被出版时就将之向所有人开放的地方.这里汇聚了无数科学领域中最前沿的研究,机器学习也包括在内.它反映了学术界当前的整体趋势,我们看到,近来发布 ...
- HDU 4329 Contest 3
果然换个编译器就过了.总的来说,不难,不过就是处理一些空格.学习了一个新的类 istringstream可以按空格划分.然后,那条式子要理解. 式子的意义是: 找到一个串,该串在query中是第几个找 ...
- 字符串的HashCode可能相同
字符串的HashCode可能相同 学习了:http://blog.csdn.net/hl_java/article/details/71511815
- Spring+mybatis+struts框架整合的配置具体解释
学了非常久的spring+mybatis+struts.一直都是单个的用他们,或者是两两组合用过,今天总算整合到一起了,配置起来有点麻烦.可是配置完一次之后.就轻松多了,那么框架整合配置具体解释例如以 ...
- _itoa进制转换
#define _CRT_SECURE_NO_WARNINGS #include <stdlib.h> #include <stdio.h> void main() { int ...
- xBIM 实战01 在浏览器中加载IFC模型文件
系列目录 [已更新最新开发文章,点击查看详细] 一.创建Web项目 打开VS,新建Web项目,选择 .NET Framework 4.5 选择一个空的项目 新建完成后,项目结构如下: 二.添 ...
- 页面的URL分析----window.location.href
window.location是页面的位置对象window.location.href是 location的一个属性值,并且它是location的默认属性. window.location直接赋值一个 ...
- Javascript四种调用模式中的this指向
第一种:函数直接调用执行的模式 function add(a,b){ console.log(this); return a+b; } add(,) //this===window 这里的this指向 ...
- Re:从 0 开始的微服务架构--(三)微服务架构 API 的开发与治理--转
原文来自:聊聊架构公众号 前面的文章中有说到微服务的通信方式,Martin Folwer 先生在他对微服务的定义中也提到“每个服务运行在其独立的进程中,服务与服务间采用 轻量级的通信机制 互相协作(通 ...
- ZOJ 2883 Shopaholic【贪心】
解题思路:给出n件物品,每买三件,折扣为这三件里面最便宜的那一件即将n件物品的价值按降序排序,依次选择a[3],a[6],a[9]----a[3*k] Shopaholic Time Limit: 2 ...