18
我正在使用EditText
。是否有可能讓文本的一部分不可編輯,其餘部分可以在同一個EditText
中編輯?我們可以在edittext中有不可編輯的文本
我正在使用EditText
。是否有可能讓文本的一部分不可編輯,其餘部分可以在同一個EditText
中編輯?我們可以在edittext中有不可編輯的文本
您可以實現一個TextChangedListener,您可以確保文本的這些部分不會得到deleted/overwritten
。
class TextChangedListener implements TextWatcher {
public void afterTextChanged(Editable s) {
makeSureNothingIsDeleted();
}
public void beforeTextChanged(CharSequence s, int start, int count, int after) {}
public void onTextChanged(CharSequence s, int start, int before, int count) {}
}
TextChangedListener tcl = new TextChangedListener();
my_editable.addTextChangedListener(tcl);
你可以使用
editText.setFocusable(false);
或
editText.setEnabled(false);
雖然禁用EditText
當前不忽略屏幕上的鍵盤輸入(我認爲這是一個bug)。
根據應用的不同,可能是更好的使用InputFilter
是拒絕所有的變化:
editText.setFilters(new InputFilter[] {
new InputFilter() {
public CharSequence filter(CharSequence src, int start,
int end, Spanned dst, int dstart, int dend) {
return src.length() < 1 ? dst.subSequence(dstart, dend) : "";
}
}
});
另見this問題。
對於顯示/隱藏密碼字段,如果使用此技巧,然後更改輸入類型(`editText.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD)`),則會清除文本內容。解決方法是在更改輸入類型時臨時將篩選器設置爲空數組。 – 2010-11-11 09:28:00