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设置软键盘搜索键以及监听搜索键点击时发生两次事件的问题解决