Android中 使用EditText或者android.support.v7.widget.AppCompatEditText输入时
默认的软键盘的回车键只是用于换行,
这会导致用户误按回车导致EditTex输入区域变宽,UI变形的BUG情况,
度娘上的回答都是让设置EditText的android:imeOptions 属性改变"回车"键默认样式
笔者按照这样的思路设置后发现无法改变"回车"键默认样式,也无法解决EditTex的“回车换行”bug,
然后在另一网页偶然看到EditText常用的属性中有一个
android:singleLine="true" 设置单行输入
抱着如果真的可以设置仅单行输入,或许这样就不会自动换行的想法,就设置玩玩,没想到
意外解决了EditTex的“回车换行”的情况,特此总结,填坑,希望遇到同样坑的朋友都能看到这个文章。
EditTex默认软键盘“回车换行”的解决方法:
1. 设置EditText的android:imeOptions 属性改变"回车"键默认样式
2. 设置EditText的android:singleLine="true" 属性限定单行输入
3. 在activity中添加监听(kotlin):
editView_search.setOnEditorActionListener( TextView.OnEditorActionListener { v, actionId, event -> if (actionId== EditorInfo.IME_ACTION_SEARCH) { //EditorInfo.IME_ACTION_SEARCH要和EditText 的imeOptions属性一样 //TODO... //处理业务逻辑 return@OnEditorActionListener true//返回true,消费这个事件 } false } )
我的问题就这样解决了
补充笔记:
EditText imeOptions 属性 (改变"回车"键默认样式)
属性值 意义 对应的代码常量
actionUnspecified 未指定 EditorInfo.IME_ACTION_UNSPECIFIED.
actionNone 动作 EditorInfo.IME_ACTION_NONE
actionGo 去往 EditorInfo.IME_ACTION_GO
actionSearch 搜索 EditorInfo.IME_ACTION_SEARCH
actionSend 发送 EditorInfo.IME_ACTION_SEND
actionNext 下一项 EditorInfo.IME_ACTION_NEXT
actionDone 完成 EditorInfo.IME_ACTION_DONE
edittext常用的属性:
android:password="true" 这条可以让EditText显示的内容自动为星号,输入时内容会在1秒内变成*字样。
android:numeric="true" 这条可以让输入法自动变为数字输入键盘,同时仅允许0-9的数字输入
android:capitalize="abcde" 这样仅允许接受输入abcde,一般用于密码验证
android:hint="密码" 设置显示的提示信息
android:singleLine="true" 设置单行输入,这样就不会自动换行