18

我正在使用一个EditText. 是否有可能部分文本不可编辑而其余部分可编辑EditText

4

2 回答 2

16

你可以使用

editText.setFocusable(false);

或者

editText.setEnabled(false);

虽然禁用EditText当前不会忽略来自屏幕键盘的输入(我认为这是一个错误)。

根据应用程序,最好使用InputFilter拒绝所有更改的 an:

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

另请参阅问题。

于 2009-05-26T15:19:18.650 回答
2

您可以实现一个 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);
于 2009-05-26T12:17:40.920 回答