【问题标题】:Why can I type into a disabled EditText?为什么我可以输入禁用的 EditText?
【发布时间】:2010-10-28 23:59:30
【问题描述】:

如果我使用禁用 EditText 小部件

editText.setEnabled(false);

我仍然可以使用屏幕输入法(在模拟器和 G1 上)输入它。这是故意的吗?我该如何解决这个问题?

【问题讨论】:

    标签: android


    【解决方案1】:

    我注意到您无法通过点击禁用的 EditText 来激活屏幕键盘,而且 DEL 键也不起作用,所以这对我来说似乎是一个错误。我在 Android 问题跟踪器中将其归档为 issue 2771

    【讨论】:

      【解决方案2】:
      edittext.setKeyListener(null);
      

      这对你有帮助

      【讨论】:

      • 这很好,因为它可以防止键盘出现。
      【解决方案3】:

      使用这个,它对我有用

      setFocusableInTouchMode(boolean);
      
      setFocusable(boolean);
      

      【讨论】:

        【解决方案4】:

        我修复了这个问题,但补丁只包含在 Honeycomb 中。这就是为什么我创建了一个小项目,其中将包含我从 2.1 开始的版本的反向移植修复。它包含对错误 2771 的修复:http://code.google.com/p/android-fixes/
        您可以从 svn 中查看“库”并将其包含在您的项目中。然后代替 android.widget.EditText 导入 edu.ubbdroid.android.widget.EditText (它扩展了原始的EditText),问题应该消失了:)

        【讨论】:

          【解决方案5】:

          也许您可以选择动态替换为 TextView 并返回。但您可能需要调整字体以匹配 EditText。

          【讨论】:

            【解决方案6】:
            etComment.setEnabled(flag);
            etComment.setFocusable(flag);
            etComment.setFocusableInTouchMode(flag);
            if (flag) {
                etComment.requestFocus();
            }
            etComment.setFilters(new InputFilter[] { new InputFilter() {
                @Override
                public CharSequence filter(
                    CharSequence source, int start, int end, Spanned dest, int dstart, int dend) {
                        if (!flag) {
                            return source.length() < 1 ? dest.subSequence(dstart, dend) : "";
                        }
                        return null;
                    }
                }
            });
            

            为所有人 你可以得到它!

            【讨论】:

              【解决方案7】:

              我认为您应该能够使用自己的函数编辑Text.setOnClickListener() 并调用 super.onClickListener() 如果您想要编辑文本。

              编辑:
              以下链接有一些听起来更正确的答案:
              Can we have uneditable text in edittext

              【讨论】:

              • 我知道,我在那里提供了一个答案:) 这个问题不是关于 如何 使其不可编辑,而是 why setEnabled( false) 仍然允许修改。我想知道我是否弄错了启用小部件的概念。
              猜你喜欢
              • 1970-01-01
              • 2022-06-15
              • 2013-05-22
              • 2015-11-05
              • 1970-01-01
              • 1970-01-01
              • 2016-04-03
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多