如何在Android中以编程方式设置editable true / false EditText?

时间:2011-07-02 06:26:17

标签: android android-edittext

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

如果EditText不是已启用 [由setEnabled(false)],则仍然可编辑

13 个答案:

答案 0 :(得分:40)

这可能有所帮助:

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

答案 1 :(得分:19)

我以更简单的方式做到了,setEditable和setFocusable为false。但你应该检查一下。

How to replicate android:editable="false" in code?

答案 2 :(得分:7)

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

KeyListener variable;
variable = editText.getKeyListener(); 

EditText的可编辑属性设置为false为:

 edittext.setKeyListener(null);

现在将EditText的可编辑属性设置为true为:

editText.setKeyListener(variable);  

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

答案 3 :(得分:4)

COM VBIDE

答案 4 :(得分:4)

如何以编程方式执行此操作:

要启用EditText,请使用:

et.setEnabled(true);

要禁用EditText,请使用:

et.setEnabled(false);

答案 5 :(得分:3)

希望这个可以帮助你:

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

答案 6 :(得分:2)

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

这是一种解决方法

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

setFocusableInTouchMode()中设置为true似乎可以解决问题。

答案 7 :(得分:1)

试试这个对我来说很好..

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

}
}
});

答案 8 :(得分:1)

试试这个,

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

editText.setKeyListener(null);

工作正常......

答案 9 :(得分:1)

editText.setFocusable(false);
editText.setClickable(false);

答案 10 :(得分:1)

由于 setEditable(false) 已被弃用,我们无法以编程方式使用它,因此我们可以使用另一种方式来解决它 setInputType(InputType.TYPE_NULL)

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

以下是可能有用的示例(我在 onCreateView 方法 Fragment 中对此进行了编码):

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    View view = inflater.inflate(R.layout.yourfragment, container, false);
    EditText sample = view.findViewById(R.id.youredittext);
    sample.setInputType(InputType.TYPE_NULL);

希望这能解决问题

答案 11 :(得分:0)

由于不推荐setEditable(false),请使用textView.setKeyListener(null);使editText无法点击。

答案 12 :(得分:0)

一种简单安全的方法:

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