编辑文本键侦听器

Posted

技术标签:

【中文标题】编辑文本键侦听器【英文标题】:Edit Text key listener 【发布时间】:2012-06-11 13:56:33 【问题描述】:

我的布局中有一个edittext 和一个按钮,在我的代码中我将edittextkeyListener 设置为null

    editText.setKeyListener(null);

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

【问题讨论】:

【参考方案1】:

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

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,传递您之前保存的默认侦听器。

【讨论】:

正是我想要的……没试过,但听起来很有希望。【参考方案2】:

你可以用这个:

// When you click your button, restore the default KeyListener
public void buttonClickHandler(...)

    editText.setKeyListener(new EditText(getApplicationContext()).getKeyListener());

【讨论】:

我觉得rainai的回答比较正确。这将保留edittext的原始keylistener 我托盘rainai的方法,但它对我不起作用,所以我选择了这个方法,因为它有效。 :) rainai 的方法对我也不起作用。这个虽然有效。 我试过这个方法,但是当我点击输入时没有出现键盘。有人遇到过这个问题吗?【参考方案3】:

它在 android 中的错误参见这里Bugs。

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

<EditText
    android:id="@+id/editText1"
    android:layout_
    android:layout_ 
    android:editable="false" <<<<<<<
</EditText>

【讨论】:

很抱歉,如果我们这样做了,我们仍然可以在禁用模式下输入编辑文本。我不能接受这个答案,尽管它可能会让用户感觉他可能无法输入编辑文本 我想做的只是通过代码。因为当我再次点击那个按钮时。我想像以前一样制作edittext的属性(无法输入)所以我不能去xml......但我会检查java代码中是否有任何像可编辑的属性......意味着如果你找到答案请通过发布帮助我...谢谢

以上是关于编辑文本键侦听器的主要内容,如果未能解决你的问题,请参考以下文章

UIActivityTypePostToFacebook 如何发布图像和文本 xcode ios NSDictionary 文本键

Excel VLookup - 文本键完全匹配数值不完全匹配

如何为存储为字典中的值的数据框提供文本键?

将侦听器从一个编辑文本更改为第二个编辑文本

java 第一次在单击侦听器上编辑文本

由于在编辑器类中设置 onClick 侦听器时出现空指针异常,Android 应用程序崩溃