【问题标题】:Can we have uneditable text in edittext我们可以在edittext中有不可编辑的文本吗
【发布时间】:2010-10-28 22:48:16
【问题描述】:

我正在使用EditText。是否可以在同一个EditText 中使部分文本不可编辑而其余部分可编辑?

【问题讨论】:

    标签: java android android-edittext


    【解决方案1】:

    你可以使用

    editText.setFocusable(false);

    editText.setEnabled(false);

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

    根据应用程序,最好使用拒绝所有更改的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)),则会清除文本内容。解决方法是在更改输入类型时将过滤器临时设置为空数组。
    【解决方案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);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-12-25
      • 2011-09-24
      • 2017-05-15
      • 1970-01-01
      • 2013-07-08
      • 2020-10-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多