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);
相关推荐
我登哥MVP1 小时前
SpringCloud Alibaba 核心组件解析:服务熔断和降级
java·spring boot·后端·spring·spring cloud·java-ee·maven
z_鑫1 小时前
深入理解MyBatis:collection集合封装的底层原理与实现细节
java·开发语言·数据库·spring boot·mybatis
我命由我123451 小时前
Android 开发问题:获取到的 Android ID 发生了变化
android·java·开发语言·java-ee·android studio·android jetpack·android runtime
Solis程序员1 小时前
Raft:分布式系统的定海神针
java·分布式·kafka·rabbitmq·agent·raft
我登哥MVP1 小时前
SpringCloud Alibaba 核心组件解析:服务调用和负载均衡
java·spring boot·后端·spring·spring cloud·java-ee·负载均衡
云烟成雨TD1 小时前
Agent Scope Java 2.x 系列【13】权限系统
java·人工智能·agent
恋猫de小郭1 小时前
由于 iOS 26 的键盘变化,Flutter 又要重构键盘区域逻辑
android·前端·flutter
倔强的石头1061 小时前
《Kingbase护城河》——深度解密数据库行锁冲突与等待事件架构
java·数据库·架构
我命由我123451 小时前
Android 开发问题:Unable to find explicit activity class
android·java·java-ee·android studio·android jetpack·android-studio·android runtime