【问题标题】:How to disable EditText in Android如何在 Android 中禁用 EditText
【发布时间】:2011-08-18 06:23:03
【问题描述】:

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

【问题讨论】:

  • 在 EditText 输入时禁用键盘?
  • 有两个 editText 字段。第一个用于输入电子邮件。如果电子邮件有效,则启用第二个 editText 字段。但问题是在输入无效电子邮件并单击下一步按钮时在软键盘上,它转到第二个文本字段并且可以输入数据,即使我已经进行了 edittext.setEnabled(false)。我使用的是 android 2.3.1

标签: android android-edittext disabled-input


【解决方案1】:

假设editText是你EditText对象:

editText.setEnabled(false);

【讨论】:

    【解决方案2】:

    在代码中:

    editText.setEnabled(false);
    

    或者,在 XML 中:

    android:editable="false"
    

    【讨论】:

      【解决方案3】:

      在 android 中禁用编辑文本:

      editText.setEnabled(false);
      

      【讨论】:

        【解决方案4】:

        如果你想显示编辑文本但不输入任何值,你可以写edittext.setInputType(0)

        【讨论】:

          【解决方案5】:

          下面的代码在android中禁用了EditText

          editText.setEnabled(false);
          

          【讨论】:

          • 只需将edittext 的focusable 属性设置为“false”即可。
          【解决方案6】:

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

          希望对你有用。

          【讨论】:

          • 对于那些宁愿在此处查看代码而不是使用超链接的人:editText.setEnabled(false);,结合editText.setFocusable(false); 将实现此目的。
          • 同样适用于 XML:android:enabled="false"android:focusable="false"。谢谢大家!
          【解决方案7】:

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

          【讨论】:

          • 这是我的问题。我认为在setFocusable(false) 之后我可以翻转 setFocusable(true)... 不是这样的。设置setFocusableInTouchMode(true) 对我有用。
          【解决方案8】:
          edittext.setFocusable(false); 
          edittext.setEnabled(false);
          
          InputMethodManager imm = (InputMethodManager)
            getSystemService(Context.INPUT_METHOD_SERVICE);
          
          imm.hideSoftInputFromWindow(edittext.getWindowToken(), 0);
            //removes on screen keyboard
          

          【讨论】:

            【解决方案9】:

            把这个写在父级中:

            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" />
            

            【讨论】:

              【解决方案10】:

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

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

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

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

              【讨论】:

                【解决方案11】:

                只需将 edittext 的可聚焦属性设置为“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"

                【讨论】:

                  【解决方案12】:

                  你可以试试下面的方法:

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

                  启用编辑文本:

                  禁用编辑文本:

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

                  【讨论】:

                  • 很好的答案,但可以通过删除正在更改背景颜色的行并添加 editText.setKeyListener(null); 来改进它;
                  【解决方案13】:
                  Edittext edittext = (EditText)findViewById(R.id.edit);
                  edittext.setEnabled(false);
                  

                  【讨论】:

                    【解决方案14】:

                    启用:

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

                    禁用:

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

                    【讨论】:

                      【解决方案15】:

                      XML editable 属性自 API LEVEL 15 以来已被弃用。

                      您现在应该使用值为noneinputType 属性。 但是有一个错误使此功能无用。

                      Here你可以关注问题状态。

                      【讨论】:

                        【解决方案16】:

                        右键单击文本区域并取消勾选可编辑选项:

                        【讨论】:

                        • 欢迎来到 Stack Overflow,Nuwan Bandara。您的答案与 JTextArea 相关,而不是来自 Android Framework 的 EditText。您不太可能为这个问题提供答案。
                        【解决方案17】:

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

                        【讨论】:

                        • 这个什么都不做
                        【解决方案18】:

                        试试这个 Kotlin 代码,

                        editField.isEnabled = !editField.isEnabled

                        【讨论】:

                          猜你喜欢
                          • 2011-05-16
                          • 2016-11-23
                          • 1970-01-01
                          • 1970-01-01
                          • 1970-01-01
                          • 2015-11-05
                          • 2019-04-28
                          • 2013-02-06
                          • 2018-12-07
                          相关资源
                          最近更新 更多