为什么我可以输入禁用的EditText?

问题描述:

如果我禁止使用为什么我可以输入禁用的EditText?

editText.setEnabled(false);

我可以使用屏幕上的输入方法(在仿真器和在G1)仍然输入到它的一个EditText插件。这是打算?我该如何解决这个问题?

我注意到,你无法通过点击一个残疾的EditText激活屏幕上的键盘,并且还DEL键不起作用,所以这看起来像一个bug。我在Android问题跟踪器中将其作为issue 2771提交。

我想你应该可以用你自己的函数编辑Text.setOnClickListener(),并且如果你想编辑文本,请调用super.onClickListener()。

编辑:
下面的链接有一定的答案,这听起来更像正道:
Can we have uneditable text in edittext

+0

我知道,我所提供的答案有一个:)这个问题是不是*如何*作它不可编辑,但*为什么* setEnabled(false)仍然允许修改。我想知道我是否得到了支持widget的概念错误。 – 2009-05-26 19:46:23

对于更多最新的答案检查这个线程:

How to replicate android editable false

我解决了这个问题,但该补丁只得到了包括在蜂窝。这就是为什么我创建了一个小项目,它将包含从2.1开始的版本的回溯修复。它包含修复bug 2771:http://code.google.com/p/android-fixes/
您可以从svn中检出“library”并将其包含在您的项目中。然后,而不是android.widget.EditText进口edu.ubbdroid.android.widget.EditText(它扩展了原来的EditText),问题应该消失:)

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

所有 你可以得到它!

也许你可以动态地用TextView替换并返回。但是您可能需要调整字体以匹配EditText。

使用此,它为我工作

setFocusableInTouchMode(boolean); 

setFocusable(boolean); 

edittext.setKeyListener(null); 

这将帮助你

+1

这很好,因为它使键盘不再出现。 – 2012-05-16 13:56:34