|
发表于 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] |
|