Android EditText.setOnEditorActionListener回调IME_ACTION_UNSPECIFIED

EditText.setOnEditorActionListener回调IME_ACTION_UNSPECIFIED

当给EditText设置了imeOptionssetOnEditorActionListener之后,有时点击键盘上的回车【ENTER】键时,actionId有时回调的值是IME_ACTION_UNSPECIFIED,而不是期望的其它Action(如:IME_ACTION_DONE),有很大的可能是EditText的回车键响应了换行(有可能实际上无法换行)或其他。

解决方案是指定EditTextandroid:singleLine="true",即明确禁止EditText的内容换行

函数设置代码如下:

EditText et_search = findViewById(R.id.et_search);
et_search.setOnEditorActionListener(new TextView.OnEditorActionListener() {
    @Override
    public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
        Log.i(TAG, "onEditorAction: " + actionId + " " + event);
        if (actionId == EditorInfo.IME_ACTION_SEARCH) {
            return true;
        }
        return false;
    }
});

当没有限制时

<!--没有加android:singleLine="true"-->
<EditText
    android:id="@+id/et_search"
    android:layout_width="match_parent"
    android:layout_height="48dp"
    android:hint="actionSearch"
    android:imeOptions="actionSearch" />
//打印日志为
onEditorAction: 0 KeyEvent { action=ACTION_DOWN, keyCode=KEYCODE_ENTER }

当加上android:singleLine="true"时,回调函数能正常响应

<!--加上android:singleLine="true"-->
<EditText
    android:id="@+id/et_search"
    android:layout_width="match_parent"
    android:layout_height="48dp"
    android:hint="actionSearch"
    android:imeOptions="actionSearch"
    android:singleLine="true" />
//点击键盘上的【ENTER】键后,打印日志为
onEditorAction: 3 null

说明当EditText内容无法换行时(如:android:singleLine="true",android:inputType="number"等 ),android:imeOptions设置才起作用

posted @   枫叶孤星  阅读(4)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
点击右上角即可分享
微信分享提示