编辑文本键侦听器

时间:2012-06-07 13:41:33

标签: android android-edittext keylistener

我的布局中有一个edittext和一个按钮,在我的代码中,我将keyListener的{​​{1}}设为null

edittext

因此我无法输入我的 editText.setKeyListener(null); 。现在点击我的按钮,我应该可以输入我的edittext。我怎样才能做到这一点。这是一个简单的问题,但我无法找到任何解决方案。任何帮助将不胜感激。

3 个答案:

答案 0 :(得分:23)

我现在可能已经迟到了,但这就是我这样做的方式:

public class MyActivity extends Activity
{
    private KeyListener listener;
    private EditText editText;

    public void onCreate(...)
    {
        editText = ... // Get EditText from somewhere
        listener = editText.getKeyListener(); // Save the default KeyListener!!!
        editText.setKeyListener(null); // Disable input
    }

    // When you click your button, restore the default KeyListener
    public void buttonClickHandler(...)
    {
        editText.setKeyListener(listener);
    }
}

基本上,在调用setKeyListener(null)之前,首先保存 EditText 的默认 KeyListener 。然后,当您单击按钮时,再次调用setKeyListener,传递先前保存的默认侦听器。

答案 1 :(得分:5)

您可以使用:

// When you click your button, restore the default KeyListener
public void buttonClickHandler(...)
{
    editText.setKeyListener(new EditText(getApplicationContext()).getKeyListener());
}

答案 2 :(得分:1)

它在android中的错误请参阅此处Bugs

但是在xml文件中你可以做到。使用android:editable="false"

<EditText
    android:id="@+id/editText1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" 
    android:editable="false" <<<<<<<
</EditText>