我们可以在编辑文本中拥有不可编辑的文本吗?

2022-09-02 22:00:32

我正在使用 .是否有可能有一部分文本不可编辑,其余部分可编辑?EditTextEditText


答案 1

您可以使用

editText.setFocusable(false);

editText.setEnabled(false);

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

根据应用程序的不同,最好使用拒绝所有更改的输入筛选器

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

另请参阅此问题


答案 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);

推荐