【问题标题】:keyboard bug with onClickListener in EditTextEditText 中 onClickListener 的键盘错误
【发布时间】:2014-05-14 10:05:35
【问题描述】:

我的 editText 有问题。我想在这个editText中放置一个默认文本,当你点击文本消失时,你可以写一个数字。布局代码一切顺利:

<EditText
    android:id="@+id/yearEdit"
    android:layout_width="145dp"
    android:layout_height="45dp"
    android:layout_marginBottom="40dp"
    android:gravity="center"
    android:ems="10"
    android:inputType="number|numberDecimal"
    android:text="@string/chooseDate"
    android:textSize="13sp"
     />

在活动中,编辑文本具有 textWatcher 和 onClickListener :

private class ChooseYear implements TextWatcher, OnClickListener {

    @Override
    public void afterTextChanged(Editable arg0) {
        if (!yearEdit.getText().toString().equals("")) {
            yearChoose = Integer.parseInt(yearEdit.getText()
                    .toString());
        }

    }

    @Override
    public void beforeTextChanged(CharSequence arg0, int arg1,
            int arg2, int arg3) {

    }

    @Override
    public void onTextChanged(CharSequence arg0, int arg1,
            int arg2, int arg3) {
    }

    @Override
    public void onClick(View arg0) {
        if (yearChoose == -1) {
            yearEdit.setText("");
        }
    }

}

但我的问题是:当我将它用作 onClickListener 时,当我单击其“完成”按钮时,android 键盘不再关闭。有人知道为什么吗?是否存在修复它的正确方法?

非常感谢您的帮助,

艾略特

【问题讨论】:

  • 如果您想在EditText 中显示一些默认文本,在点击时应该消失,为什么不使用android:hint="@string/chooseDate" 而不是当前android:text="@string/chooseDate"?我不太明白其余的部分。设置OnClickListener的唯一目的是隐藏键盘吗?
  • 我会尝试,android:hint="@string/chooseDate" 通过删除 OnClickListener 来解决我的问题。但我也对这个事实感兴趣,而不是添加一个 onClickListener 停用键盘的完成按钮,所以如果有人知道这一点,我很感兴趣!
  • 不确定是否相关,但您可能希望在测试提示属性时注释掉 onClickListener
  • hint 在我的情况下不起作用,因为我只有一个 editText 并且默认选择它,因此文本永远不会消失,提示可能会监听 onFocusedChanged。没有?
  • 您是否尝试过禁用 OnClickListener?如果这是唯一的EditText,并且当您的Activity 启动时,如果它正在获得焦点并因此不显示提示,您还可以尝试将此属性添加到 manifest.xml 中的 Activity:android:windowSoftInputMode="stateHidden"。这不会自动打开键盘并显示提示。

标签: android android-layout onclicklistener


【解决方案1】:

对于有兴趣的人,这是我对自己问题的结论。

当您在 EditText 上添加 OnClickListener 时,键盘似乎无法正常工作(“完成”按钮未关闭键盘)。为了解决这个问题,我必须添加一行:

yearEdit.setOnClickListener(null);

在代码中。当 OnClickListener 设置为 null 时,“完成”按钮重新启动以正常工作。如果您之后再次需要它,您必须重新设置 OnClickListener(不是我的情况)。

我认为这可能是一个 Android 错误,因为没有逻辑比 OnClickListener 对键盘产生影响。如果你想分享你的意见,我会很感兴趣。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-01-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-12
    • 1970-01-01
    相关资源
    最近更新 更多