|  | 
 
 发表于 2011-10-22 17:24:11
|
显示全部楼层 
Re:Q
| 可以用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)。代码如下:
 
 
 private void setEditable(boolean value) {
 
 if(value) {
 
 mEdit.setFilters(new InputFilter[] { new InputFilter() {
 
 public CharSequence filter(CharSequence source, int start,
 
 int end, Spanned dest, int dstart, int dend) {
 
 return null;
 
 }
 
 } });
 
 
 
 mEdit.setCursorVisible(true);
 
 mEdit.setFocusableInTouchMode(true);
 
 mEdit.requestFocus();
 
 } else {
 
 
 
 mEdit.setFilters(new InputFilter[] { new InputFilter() {
 
 @Override
 
 public CharSequence filter(CharSequence source, int start,
 
 int end, Spanned dest, int dstart, int dend) {
 
 return source.length() < 1 ? dest.subSequence(dstart, dend)
 
 : "";
 
 }
 
 } });
 
 
 
 mEdit.setCursorVisible(false);
 
 mEdit.setFocusableInTouchMode(false);
 
 mEdit.clearFocus();
 
 }
 [/code]
 | 
 |