1遗遵、首先想到在xml中設(shè)置android:editable="false",但是如果想在代碼中動(dòng)態(tài)設(shè)置可編輯狀態(tài),沒有找到對應(yīng)的函數(shù)
2拷恨、然后嘗試使用editText.setFocusable(false);和editText.setEnabled(false);設(shè)置不可編輯狀態(tài)舔亭;editText.setFocusable(true);和 editText.setEnabled(true);設(shè)置可編輯狀態(tài)些膨。
發(fā)現(xiàn)在editText.setFocusable(false);和editText.setEnabled(false);時(shí)不可編輯,但是editText.setFocusable(true);和?editText.setEnabled(true);也是不可編輯的钦铺,感覺這個(gè)時(shí)候EditText控件高亮度了订雾,但是沒有焦點(diǎn)
3、最后嘗試使用editText.setFocusable(false);和editText.setFocusableInTouchMode(false);設(shè)置不可編輯狀態(tài)矛洞;editText.setFocusableInTouchMode(true);editText.setFocusable(true);editText.requestFocus();設(shè)置可編輯狀態(tài)
這個(gè)可以實(shí)現(xiàn)可編輯和不可編輯洼哎,但是又發(fā)現(xiàn)一個(gè)問題烫映,在不可編輯狀態(tài)如果常按住控件,可以進(jìn)行粘帖操作噩峦,不知道怎么可以不能進(jìn)行粘帖啊
最終解決方案:
把控件和是否可編輯傳入后锭沟,就可以實(shí)現(xiàn)控制輸入框編輯狀態(tài)。
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 {
//設(shè)置不可獲取焦點(diǎn)
editText.setFocusable(false);
editText.setFocusableInTouchMode(false);
//輸入框無法輸入新的內(nèi)容
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