Android EditText.setOnEditorActionListener回调IME_ACTION_UNSPECIFIED
EditText.setOnEditorActionListener回调IME_ACTION_UNSPECIFIED
当给EditText
设置了imeOptions
和setOnEditorActionListener
之后,有时点击键盘上的回车【ENTER】键时,actionId
有时回调的值是IME_ACTION_UNSPECIFIED
,而不是期望的其它Action(如:IME_ACTION_DONE
),有很大的可能是EditText
的回车键响应了换行(有可能实际上无法换行)或其他。
解决方案是指定EditText
的android: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
设置才起作用
标签:
Android
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人