如何在Android中禁用EditText

时间:2011-05-04 06:06:59

标签: android android-edittext disabled-input

如何在Android中的EditText字段中禁用输入?

18 个答案:

答案 0 :(得分:59)

您可以使用EditText.setFocusable(false)停用修改EditText.setFocusableInTouchMode(true)以启用编辑功能;

答案 1 :(得分:37)

我认为它是android中的一个bug ..可以通过添加这个补丁修复:) 检查这些链接 question 1question 2

希望它会有用。

答案 2 :(得分:35)

在代码中:

editText.setEnabled(false);

或者,在XML中:

android:editable="false"

答案 3 :(得分:11)

假设editText是你EditText对象:

editText.setEnabled(false);

答案 4 :(得分:8)

只需将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"

答案 5 :(得分:8)

您可以尝试以下方法:

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

启用EditText:

Enabled EditText

已禁用EditText:

Disabled EditText

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

答案 6 :(得分:5)

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

答案 7 :(得分:2)

以下代码禁用了android中的EditText

editText.setEnabled(false);

答案 8 :(得分:2)

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

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

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

答案 9 :(得分:1)

要在android中禁用edittext:

editText.setEnabled(false);

答案 10 :(得分:1)

如果要显示edittext但不输入任何值

,则可以编写edittext.setInputType(0)

答案 11 :(得分:1)

启用:

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

禁用:

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

答案 12 :(得分:0)

尝试此Kotlin代码,

editField.isEnabled = !editField.isEnabled

答案 13 :(得分:0)

在EditText下的layout.xml文件中将inputType属性设置为无。

答案 14 :(得分:0)

API LEVEL 15起,不推荐使用XML editable属性。

您现在应该使用值为inputType的{​​{1}}属性。 但是有一个错误使该功能无法使用。

Here,您可以关注问题的状态。

答案 15 :(得分:0)

据我说...如果你已经在XML文件中声明了edittext并在XML文件"android:enabled=false"中设置了属性,那么在java文件添加时就在运行时禁用它只有2或3行

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

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

  4. 您可以在运行时通过java文件启用或禁用每个控件,并按XML文件设置时间。

答案 16 :(得分: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" />

答案 17 :(得分:-1)

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

enter image description here