Android 开发问题:EditText 控件的 android:imeOptions=“actionDone“ 属性不生效

xml 复制代码
<EditText
    android:id="@+id/et_test"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:hint="请输入内容"
    android:imeOptions="actionDone" />
  • 在 Android 开发中,上述代码中,EditText 控件的 android:imeOptions="actionDone" 属性不生效,即无法实现点击软键盘上的"完成"按钮时
问题原因
  1. android:imeOptions="actionDone" 属性用于将软键盘右下角的回车按钮变为"完成"按钮,目的是为了隐藏软键盘

  2. 根本原因是未设置单行输入,系统优先允许换行,但也可以监听此动作执行自定义操作

处理方法
  1. 使用 android:inputType="text" 属性,设置为单行输入
xml 复制代码
<EditText
    android:id="@+id/et_test"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:hint="请输入内容"
    android:imeOptions="actionDone"
    android:inputType="text" />
  1. 或者,使用监听器监听此动作执行自定义操作
xml 复制代码
<EditText
    android:id="@+id/et_test"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:hint="请输入内容"
    android:imeOptions="actionDone" />
java 复制代码
EditText etTest = findViewById(R.id.et_test);

etTest.setOnEditorActionListener((v, actionId, event) -> {

    Log.i(TAG, "actionId: " + actionId);

    if (actionId == EditorInfo.IME_ACTION_DONE) {

        // 隐藏软键盘
        hideKeyboard();

        // 清除焦点
        v.clearFocus();

        // 表示监听器已经处理这个事件,系统不需要再处理
        return true;
    }

    // 针对某些输入法的情况
    if (actionId == EditorInfo.IME_ACTION_UNSPECIFIED) {
        if (event != null && event.getAction() == KeyEvent.ACTION_DOWN && event.getKeyCode() == KeyEvent.KEYCODE_ENTER) {
            hideKeyboard();
            v.clearFocus();
            return true;
        }
    }

    return false;
});
java 复制代码
InputMethodManager imm = (InputMethodManager) getSystemService(INPUT_METHOD_SERVICE);

imm.hideSoftInputFromWindow(getWindow().getDecorView().getWindowToken(), 0);
相关推荐
倔强的石头10631 分钟前
【Linux指南】进程通信系列(二):匿名管道 —— pipe 的本质、fork 继承与四种读写规则
java·linux·运维
调试优选官37 分钟前
2026年IoT物联网开发赛道年度榜单深度解析:D-coding物联网系统定制与源码交付能力专项解读
java·物联网·struts·iot·开发经验
木井巳39 分钟前
【动态规划】三步问题
java·算法·leetcode·动态规划·推荐算法
小张成长计划..42 分钟前
【Linux】25:线程概念和控制
java·linux·jvm
蛋蛋的就会顺顺的10 小时前
hot100 p0——栈,贪心算法,动态规划
java·前端·javascript·算法·leetcode·力扣
朱涛的自习室10 小时前
70 美金的 Beyond Compare,我让 Gemini 4 和 DeepSeek 造个开源免费版(Day 2)
android·前端·人工智能
需要82610 小时前
Spring Bean 生命周期:从实例化到销毁的完整钩子
java·后端·spring
小 黄 鸡10 小时前
HashMap 面试必会知识点详解(JDK 8)
java·面试·职场和发展
伯恩bourne12 小时前
Spring Boot Bean 注册的两种方式:@Component 家族 vs @Configuration + @Bean
java·spring boot·后端
silvamux_13 小时前
curl 测试 OpenAI 兼容 API 的完整流程
java·人工智能·缓存·ai·oneapi