如何在Android中禁用EditText


77

如何禁用EditTextAndroid中的字段输入?


1
在EditText中输入时禁用键盘?
2011年

有两个editText字段。第一个用于输入电子邮件。如果电子邮件有效,则第二个editText字段将被启用。但是问题是在键入无效的电子邮件并单击软键盘上的下一个按钮时,它转到第二个文本字段,即使我已经做了edittext.setEnabled(false)。我正在使用android 2.3.1
aj10 2011年

Answers:


42

我认为这是android中的错误。可以通过添加此补丁来修复它:)
检查这些链接 问题1问题2

希望它会有用。


110
对于那些希望直接在此处查看代码而不是使用超链接:的用户 editText.setEnabled(false);,结合使用editText.setFocusable(false);将实现此目的。
Mxyk 2012年

7
对于XML:android:enabled="false"和也是如此android:focusable="false"。谢谢你们!
jelies,2013年

63

您可以使用EditText.setFocusable(false)禁用编辑
EditText.setFocusableInTouchMode(true)来启用编辑;


5
这是我的问题。我认为在setFocusable(false)我可以翻转setFocusable(true)之后,情况并非如此。设置setFocusableInTouchMode(true)对我有用。
timgcarlson


14

假设editTextEditText反对:

editText.setEnabled(false);

11

您可以尝试以下方法:

 private void disableEditText(EditText editText) {
    editText.setFocusable(false);
    editText.setEnabled(false);
    editText.setCursorVisible(false);
    editText.setKeyListener(null);
    editText.setBackgroundColor(Color.TRANSPARENT); 
 }

启用EditText:

启用的EditText

禁用EditText:

禁用EditText

它对我有用,希望对您有帮助。


很好的答案,但是可以通过删除更改背景颜色的行并添加editText.setKeyListener(null)来改善。
Syed Raza Mehdi

9

只需将edittext的focusable属性设置为“ false”,就可以完成。

<EditText
        android:id="@+id/EditTextInput"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:focusable="false"
        android:gravity="right"
        android:cursorVisible="true">
    </EditText>

以下选项不起作用

在代码中:

editText.setEnabled(false); 或者,在XML中: android:editable="false"


6
Edittext edittext = (EditText)findViewById(R.id.edit);
edittext.setEnabled(false);

4

启用:

private void enableEditText() {
    mEditText.setFocusableInTouchMode(true);
    mEditText.setFocusable(true);
    mEditText.setEnabled(true);
}

禁用:

private void disableEditText() {
    mEditText.setEnabled(false);
    mEditText.setFocusable(false);
    mEditText.setFocusableInTouchMode(false);
}

2

下面的代码在android中禁用EditText

editText.setEnabled(false);

只需将您的edittext的focusable属性设置为“ false”就可以了。<!-开始代码段:js隐藏:false-> <!-语言:lang-html-> <EditText android:id =“ @ + id / EditTextInput” android:layout_width =“ fill_parent” android:layout_height = “ wrap_content” android:focusable =“ false” android:gravity =“ right” android:cursorVisible =“ true”> </ EditText> <!-结束代码段->
ramit girdhar 2014年

2

您可以编写edittext.setInputType(0)是否要显示edittext但不输入任何值


2
edittext.setFocusable(false); 
edittext.setEnabled(false);

InputMethodManager imm = (InputMethodManager)
  getSystemService(Context.INPUT_METHOD_SERVICE);

imm.hideSoftInputFromWindow(edittext.getWindowToken(), 0);
  //removes on screen keyboard

1

要在android中禁用edittext:

editText.setEnabled(false);

1

据我说...如果您已经edittext在XML文件中声明了,并在XML文件中设置了该属性,"android:enabled=false"然后在运行时在java文件中禁用了该属性,则仅添加了2或3行

  1. 首先创建对象
  2. 声明EditText et1;
  3. 通过ID获取

    et1 = (EditText) FindViewById(R.id.edittext1);
    et1.setEnabled(false);

您可以在运行时通过java文件启用和禁用每个控件,而在设计时通过XML文件启用或禁用每个控件。


0

写在父母:

android:descendantFocusability="beforeDescendants"
android:focusableInTouchMode="true"

例:

<RelativeLayout 
android:id="@+id/menu_2_zawezanie_rl"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/menu_2_horizontalScrollView"
android:descendantFocusability="beforeDescendants"
android:focusableInTouchMode="true"
android:orientation="horizontal"
android:background="@drawable/rame">

<EditText
    android:id="@+id/menu2_et"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:layout_centerVertical="true"
    android:layout_toLeftOf="@+id/menu2_ibtn"
    android:gravity="center"
    android:hint="@string/filtruj" >
</EditText>
<ImageButton
    android:id="@+id/menu2_ibtn"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:layout_centerVertical="true"
    android:background="@null"
    android:src="@drawable/selector_btn" />


0

editableAPI LEVEL 15开始不推荐使用XML属性。

您现在应该将该inputType属性与value一起使用none。但是有一个错误使此功能无效。

在这里您可以关注问题状态。




-1

右键单击文本区域,然后取消选中可编辑选项:

在此处输入图片说明


欢迎来到Nuwan Bandara的Stack Overflow。您的答案与JTextArea有关,而不与Android Framework中的EditText有关。您不太可能为该问题提供答案。
伊戈尔·埃斯科德罗
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.