解决Android EditText或者AppCompatEditText按软键盘回车只是换行的问题

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 属性改变"回车"键默认样式   

扫描二维码关注公众号,回复: 4831214 查看本文章

  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"  设置单行输入,这样就不会自动换行

猜你喜欢

转载自blog.csdn.net/qq_39587209/article/details/84994753
今日推荐