首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >关闭软键盘后,编辑文本光标仍然闪烁

关闭软键盘后,编辑文本光标仍然闪烁
EN

Stack Overflow用户
提问于 2016-09-01 09:58:26
回答 7查看 2.6K关注 0票数 12

在软键盘关闭后,编辑文本光标是否应该继续闪烁,或者这是在模拟器上测试的结果,而在实际设备上不会发生?--正如this discussion中的第二篇文章所指出的那样

更新:

我知道edittext的光标仍然闪烁,因为它们仍然处于焦点位置--无论edittext何时失去焦点,都会记录一条消息,但当软键盘关闭时,消息就不会记录下来。

更新:

我试过这样做:

代码语言:javascript
运行
复制
@Override
public void onBackPressed() {
    super.onBackPressed();
    getCurrentFocus().clearFocus();
}

因此,每次关闭键盘时,当前处于焦点中的EditText将失去该焦点,并调用onFocusChanged()。问题是,当键盘打开时按下back按钮时,onBackPressed()不会被调用。我之所以知道这一点,是因为我在onBackPressed()中放了一个吐司,当键盘打开的同时按下后退按钮时,不会显示吐司。

EN

回答 7

Stack Overflow用户

发布于 2016-09-08 23:43:15

首先创建一个自定义的Edit文本。以下是当按下键盘back以关闭键盘时进行回调的示例

代码语言:javascript
运行
复制
public class EdittextListner extends EditText {

private KeyImeChange keyImeChangeListener;

public EdittextListner(Context context, AttributeSet attrs) {
    super(context, attrs);
}

public void setKeyImeChangeListener(KeyImeChange listener) {
    keyImeChangeListener = listener;
}

public interface KeyImeChange {
    public boolean onKeyIme(int keyCode, KeyEvent event);
}

@Override
public boolean onKeyPreIme(int keyCode, KeyEvent event) {
    if (keyImeChangeListener != null) {
        return keyImeChangeListener.onKeyIme(keyCode, event);
    }
    return false;
}

}

其次,在布局文件中将EditText更改为EdittextListner。

最后,执行以下操作

代码语言:javascript
运行
复制
 mLastNameEditText.setKeyImeChangeListener(new EdittextListner.KeyImeChange() {
        @Override
        public boolean onKeyIme(int keyCode, KeyEvent event) {
            mLastNameEditText.clearFocus();
            return true;
        }
    });

这对我很有效。希望这能有所帮助

票数 1
EN

Stack Overflow用户

发布于 2016-09-09 19:19:49

编辑文本是一个接受用户输入视图,所以它与键盘打开或关闭无关,当用户点击编辑文本时,编辑文本将获得焦点,光标开始闪烁以接受输入,

所以你可以做一件事,当你同时关闭键盘时,你也可以为编辑文本设置光标的可见性,这样它就会停止闪烁,

为此,当您隐藏键盘时,您需要写在下面的行。

代码语言:javascript
运行
复制
    editTextObject.setCursorVisible(false);

这将使光标停止闪烁。

票数 1
EN

Stack Overflow用户

发布于 2016-09-05 02:30:21

正如您所说,EditText中闪烁的光标与具有焦点的EditText相关,但显示或隐藏软键盘与View获得或丢失焦点无关。任何View (EditText或其他)都可以与是否显示软键盘无关地进行聚焦,并且EditText本身没有任何使其行为不同的东西。

如果希望EditText在隐藏软键盘时失去焦点,则需要自己实现此功能,方法是侦听软键盘可见性的更改并相应地更新EditText

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39261590

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档