EditText:如何启用/禁用输入?

时间:2011-10-07 09:20:42

标签: android android-edittext

我有一个7x6的EditText视图网格。我希望在应用程序启动时禁用所有这些功能,即它们的行为应该与普通TextViews一样,并且不可编辑。然后用户点击网格中的一个单元格,它改变其背景并执行一些视觉效果。如果用户再次单击该单元格,则应允许编辑。我正在与OnClick()OnFocusChange()听众进行斗争,但我无法完成这样的基本互动。

使用setEnabled()setFocusable()无济于事。我想知道为什么即使这样一个简单的任务在Android上也变得如此困难

7 个答案:

答案 0 :(得分:23)

我终于找到了解决方案。这是一个打电话的问题

  • setFocusableInTouchMode(boolean)
  • setFocusable(boolean)

首次创建EditText时,它可以截取点击次数。然后可以再次设置这些标志以使EditText可编辑,请求焦点,并使用InputMethodManager方法手动显示/隐藏软键盘

答案 1 :(得分:4)

尝试使用此setFocusableOnTouch()代替setFocusable()方法。

答案 2 :(得分:2)

将输入类型设置为null是不够的,因为它只能抑制软键盘,如果设备有硬件键盘,则会有输入。因此,为了禁止任何编辑,您应该执行以下操作:

editText.setInputType(InputType.TYPE_NULL);
editText.setFilters(new InputFilter[]
    {
        new InputFilter()
        {
            public CharSequence filter(CharSequence src, int start,
            int end, Spanned dst, int dstart, int dend)
            {
                return src.length() < 1 ? dst.subSequence(dstart, dend) : "";
            }
        }
    });

这样可以保证EditText内容不会被更改

答案 3 :(得分:2)

首先在edittext

中将这些行写在你的xml中
android:enabled="false"

而不是使用java中的代码,如下所示

Boolean check = true;
            EDITEXT.setEnabled(check);
            check=!check;

答案 4 :(得分:0)

由于您使用gridview来实现您的顾虑,您可以执行以下操作。

  1. gridview上的setOnItemClicklistener
  2. 扩展Edittext以制作您自己的edittext视图
  3. extedned类将包含名为editable的布尔属性,在gridviewy的onItemclicklisterner中使用此属性,可以为editetext调用setEditable或setFocusabel或两者。

    如果你分享你的代码,我可以详细说明这个问题。

答案 5 :(得分:-1)

您可以进行以下操作:
如果您想使edittext不可编辑,请使用以下方法

edittext.setInputtype(Null);

如果您想使edittext可编辑,请使用相同的方法并设置正确的输入类型 访问following link了解更多信息

答案 6 :(得分:-1)

根据Android指南,请使用LongKeyPress获取您所拥有的问题“如果用户再次点击该单元格,则应该允许编辑”