android中控制EditText不可编辑的问题

1、首先想到在xml中设置android:editable="false",但是如果想在代码中动态设置可编辑状态,没有找到对应的函数

2、然后尝试使用editText.setFocusable(false);和editText.setEnabled(false);设置不可编辑状态;editText.setFocusable(true);和 editText.setEnabled(true);设置可编辑状态。

发现在editText.setFocusable(false);和editText.setEnabled(false);时不可编辑,但是editText.setFocusable(true);和 editText.setEnabled(true);也是不可编辑的,感觉这个时候EditText控件高亮度了,但是没有焦点

3、最后尝试使用editText.setFocusable(false);和editText.setFocusableInTouchMode(false);设置不可编辑状态;editText.setFocusableInTouchMode(true);editText.setFocusable(true);editText.requestFocus();设置可编辑状态

这个可以实现可编辑和不可编辑,但是又发现一个问题,在不可编辑状态如果常按住控件,可以进行粘帖操作,不知道怎么可以不能进行粘帖啊

最终解决方案:

把控件和是否可编辑传入后,就可以实现控制输入框编辑状态。

private void isEdit(boolean value, EditText editText) {

if (value) {

editText.setFocusable(true);

editText.setFocusableInTouchMode(true);

editText.setFilters(new InputFilter[] { new InputFilter() {

@Override

public CharSequence filter(CharSequence source, int start, int end, Spanned dest, int dstart, int dend) {

return null;

}

} });

} else {

//设置不可获取焦点

editText.setFocusable(false);

editText.setFocusableInTouchMode(false);

//输入框无法输入新的内容

editText.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) : "";

}

} });

}

}

参考来源:http://blog.csdn.net/wuxianglong/article/details/6336406

http://blog.csdn.net/luliyuan/article/details/8065447

你可能感兴趣的:(android中控制EditText不可编辑的问题)