`
marine8888
  • 浏览: 541120 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

EditText 输入过滤

阅读更多

要显示不可编辑的文字,最简单的方法当然是使用TextView,但有时出于某种原因,可能需要用EditText来显示文字,并且让其不可编辑。EditText本身是没有方法来设置使得其不可编辑的,但方法总是可以想出来的。

(1)setFilters

InputFilter用来对输入的文字进行过滤,需要实现一个方法:

public abstract CharSequence filter (CharSequence source, int start, int end, Spanned dest, int dstart, int dend)
其中source代表你输入的文字,用键盘输入则为单个字符,start为0,end为1;粘帖时source为一串字符。

dest为现在显示的字符串,dstart,dend为光标所在字符串的位置。

下面的InputFilter为当输入任何字符时,替换为空字符(相当于不输入),如果按删除键时候,保持原来的字符,这时dstart退了一格,所以保持字符应该为dst.subSequence(dstart, dend)。代码如下:

 

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/van_ni/archive/2010/06/28/5699549.aspx

editText.setFilters(new InputFilter[] { new InputFilter() {
	public CharSequence filter(CharSequence src, int start, int end, Spanned dst, int dstart, int dend) {
		Log.d(TAG, "src=" + src + ";start=" + start + ";end=" + end);
		Log.d(TAG, "dst=" + dst + ";dstart=" + dstart + ";dend=" + dend);
		return src.length() < 1 ? dst.subSequence(dstart, dend) : "";
	}
	} });

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics