如何以编程方式在Android中设置可编辑的真/假EditText?

如何以编程方式在Android中设置可编辑的真/假EditText?,android,android-edittext,Android,Android Edittext,我们可以在XML布局中设置EditText的可编辑属性,但不能以编程方式设置,但没有setEditable()方法 如果EditText未启用[通过setEnabled(false)]仍可编辑 我用了一种更简单的方法,setEditable和setFocusable为false。但是你应该检查一下这个 这可能有助于: if (cbProhibitEditPW.isChecked()) { // disable editing password editTextPassword.se

我们可以在XML布局中设置
EditText
的可编辑属性,但不能以编程方式设置,但没有
setEditable()
方法


如果
EditText
启用[通过
setEnabled(false)
]仍可编辑

我用了一种更简单的方法,setEditable和setFocusable为false。但是你应该检查一下这个

这可能有助于:

if (cbProhibitEditPW.isChecked()) { // disable editing password
       editTextPassword.setFocusable(false);
       editTextPassword.setFocusableInTouchMode(false); // user touches widget on phone with touch screen
       editTextPassword.setClickable(false); // user navigates with wheel and selects widget
       isProhibitEditPassword= true;
} else { // enable editing of password
       editTextPassword.setFocusable(true);
       editTextPassword.setFocusableInTouchMode(true);
       editTextPassword.setClickable(true);
       isProhibitEditPassword= false;
}

试试这个,对我来说很好

EditText.setInputType(0);
EditText.setFilters(new InputFilter[] {new InputFilter()
{
@Override
public CharSequence filter(CharSequence source, int start,
                            int end, Spanned dest, int dstart, int dend) 
{
return source.length() < 1 ? dest.subSequence(dstart, dend) : "";

}
}
});
EditText.setInputType(0);
setFilters(new InputFilter[]{new InputFilter())
{
@凌驾
公共CharSequence筛选器(CharSequence源,int start,
内端、跨端、内端、内端)
{
返回source.length()<1?dest.subSequence(dstart,dend):“”;
}
}
});
试试这个

EditText editText=(EditText)findViewById(R.id.editText1);

editText.setKeyListener(null);

它很好用…

希望这个能帮助你:

edittext1.setKeyListener(null);
edittext1.setCursorVisible(false);
edittext1.setPressed(false);
edittext1.setFocusable(false);

通过
EditText.getKeyListener()
并存储在KeyListener类型变量中,该变量将包含 可编辑属性值:

KeyListener variable;
variable = editText.getKeyListener(); 
EditText
的可编辑属性设置为false,如下所示:

 edittext.setKeyListener(null);
现在将
EditText
的可编辑属性设置为true,如下所示:

editText.setKeyListener(variable);  

注意:在XML中,
EditText
的默认可编辑属性应为true。

一旦删除编辑文本的焦点,即使再次将其设置为可聚焦,也不允许键入

editText.setFocusable(false);
editText.setClickable(false);
这里有一个解决办法

if (someCondition)
   editTextField.setFocusable(false);
else
   editTextField.setFocusableInTouchMode(true);

setFocusableInTouchMode()中将其设置为true似乎可以达到目的。

如何通过编程实现:

要启用EditText,请使用:

et.setEnabled(true);
et.setEnabled(false);
要禁用EditText,请使用:

et.setEnabled(true);
et.setEnabled(false);

由于不推荐使用
setEditable(false)
,请使用
textView.setKeyListener(null)使编辑文本不可点击。

一种简单安全的方法:

editText.clearFocus();
editText.setFocusable(false);

由于
setEditable(false)
已被弃用,并且我们无法以编程方式使用它,因此我们可以使用另一种方法通过
setInputType(InputType.TYPE\u NULL)

这意味着我们改变了编辑文本的输入类型。我们将其设置为NULL,使其变得不可编辑

以下是可能有用的示例(我在onCreateView方法片段中编写了此代码):


希望这能回答问题

EditText.setEnabled(false);如果您设置了此选项,edittext将100%禁用。如果可能,我选中了,它将禁用您的edittext。是的,它可能已禁用,但我们无法使用此选项复制edittext的值。实现此结果的最可靠方法是使用
UI.setReadOnly(myEditText,true)
from。必须设置一些属性,您可以签出这些属性。的可能重复项请提供其他详细信息,说明这将解决此问题的原因。setFocusableInTouchMode save my day!谢谢在上面禁用后,编辑文本仍将接收关键事件,将答案与下面的Sumit Sonome答案结合起来,使其完全不可编辑。这是我的首选解决方案,加上
setInputType(InputType.TYPE\u NULL)
,因为其他一些解决方案也禁用滚动和编辑