Android 软键盘监听回车之没辣么简单

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android 软键盘监听回车之没辣么简单相关的知识,希望对你有一定的参考价值。

参考技术A 等等,这些方法已经被用烂了:)

为啥还写 🤔

此处,需要一条分割线……

在实际操作的过程中,还是遇到了一个很头疼的问题 😤

华为输入法!触宝输入法!😫

并!

不能!

很生气有木有!

所以!👀

抱抱 TextWatcher 🤗 啊哈哈哈哈,我们看看官方介绍:

不得不说,TextWatcher 干的漂亮~

上回书说到回车监听的第四种方法……
很快就遇到了新问题,不知列位看官有没有发现,我们在上面的onTextChanged方法中进行了setText!本来是没啥问题的,但是个别地方遇到SpannableString就出了问题……

于是乎,我尝试了各种办法,看到回车都想吐了好吗:)
看到很多人遇到这个问题就是没有解决的办法
我也很绝望啊,症状完全相符合有木有啊!
就是没人回答。

原因EditText的inputType为textMultiLine和部分输入法的回车监听相冲突!
妈蛋,终于找到病根了……

当EditText的inputType包含textMultiLine标志位,会强迫imeOptions加上IME_FLAG_NO_ENTER_ACTION位,这导致了只显示Enter键。

因此,对EditText进行如下修改,这个办法真的是让老夫哇的一声哭出来……

配合使用上面的onEditorAction,效果更佳啊哈哈哈哈

送个小礼包:在测试的过程中,触宝输入法还是不能被监听,经过修改

以上就是我知道的所有方法啊哈哈哈

应该还有其他的

求分享啊哈哈😉

Android:从软键盘中删除 Enter 键

【中文标题】Android:从软键盘中删除 Enter 键【英文标题】:Android: Remove Enter Key from softkeyboard 【发布时间】:2011-10-22 21:47:23 【问题描述】:

在我的登录表单中,当用户单击 EditText 并按下回车键时,这会插入一个新行,因此会增加 EditText 的大小。下一刻,它返回到之前的位置并在密码字段(即下一个字段)中打印一个点。

我想从软键盘中删除这个回车键。有可能吗?

【问题讨论】:

我认为最简单的方法是 android:inputType="textPersonName" 它将停止输入 textView.. android:inputType="textNoSuggestions" 从软键盘中删除返回键。 【参考方案1】:

将此标签添加到xml中的textView

    android:singleLine = "true"

【讨论】:

android:maxLines = "1" & android:lines = "1" 并没有真正起作用.. 但是 android:singleLine = "true" 起作用了.. Developer.Android 并没有说 android:singleLine 已弃用!!【参考方案2】:

恐怕你不能这样做。但有一件事是你可以像这样处理软键盘按键事件,

edittext.setOnKeyListener(new OnKeyListener() 

        public boolean onKey(View v, int keyCode, KeyEvent event) 


                if (event.getAction() == KeyEvent.ACTION_DOWN
                        && event.getKeyCode() ==       KeyEvent.KEYCODE_ENTER) 
                    Log.i("event", "captured");

                    return false;
                 
                else if(event.getAction() == KeyEvent.ACTION_DOWN
                        && event.getKeyCode() == KeyEvent.KEYCODE_BACK)
                    Log.i("Back event Trigered","Back event");

                

            

            
            return false;
        
    );

除此之外,您必须注意,提供android:singleLine=true 属性将使您的edittext 在按下软键盘ENTER 时变大

【讨论】:

"android:singleLine=true" 救了我 :D 试试那个。并感谢@Andro 的回答。【参考方案3】:

使用: android:singleLine = "true" 要么 edittext.setSingleLine();

你的 ENTER 键不见了

【讨论】:

【参考方案4】:

在标签EditText内你只需要这样做:

android:singleLine="true"

删除键盘上的回车键

更新

因为android:singleLine="true" 已弃用我使用android:maxLines="1" 来避免输入EditText。方法名称如何表示只允许 N 行。

【讨论】:

现在已弃用【参考方案5】:

新的更新:

android:maxLines="1"

【讨论】:

【参考方案6】:

如果你想要在你的 .java 中更通用的东西:

boolean state = true; yourTextInputEditText.setSingleLine(state);

【讨论】:

以上是关于Android 软键盘监听回车之没辣么简单的主要内容,如果未能解决你的问题,请参考以下文章

Android 手机软键盘的弹起和关闭的监听

JS移动端如何监听软键盘回车事件

android设置软键盘搜索键以及监听搜索键点击时发生两次事件的问题解决

android设置软键盘搜索键以及监听搜索键点击时发生两次事件的问题解决

Android软键盘弹出和收回监听

H5如何对android和ios手机软键盘的监听