JonSkeet 2013-09-06 05:37 采纳率: 0%
浏览 947

如何在一个多行的 EditTextView 上添加 Done 和 Return 按钮?

程序中有一个 EditTextView,包括 "Done" 按钮和回车键。
问题是 EditTextView 必须是多行的,还要实现 "Done" 按钮。
使用的代码:

<EditText
    android:id="@+id/messageToSend"
    android:layout_width="match_parent"
    android:layout_height="68dp"
    android:gravity="top|left"
    android:hint="@string/messageToSend"
    android:scrollHorizontally="false"
    android:imeOptions="actionDone"
    android:inputType="textImeMultiLine" />

估计是方法用错了,我想输入结束后隐藏了键盘。

  • 写回答

1条回答 默认 最新

  • ChatGPTᴼᴾᴱᴺᴬᴵ 2023-02-14 14:10
    关注

    该回答引用ChatGPT

    要在输入结束后隐藏键盘并实现 "Done" 按钮,可以使用以下代码:


    在 XML 中:

    <EditText
        android:id="@+id/messageToSend"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="top|left"
        android:hint="@string/messageToSend"
        android:inputType="textMultiLine"
        android:maxLines="5"
        android:scrollHorizontally="false"
        android:imeOptions="actionDone" />
    

    在 Java 中:

    EditText messageToSend = findViewById(R.id.messageToSend);
    messageToSend.setHorizontallyScrolling(false);
    messageToSend.setMaxLines(Integer.MAX_VALUE);
    
    messageToSend.setOnEditorActionListener((textView, actionId, keyEvent) -> {
        if (actionId == EditorInfo.IME_ACTION_DONE) {
            // 隐藏键盘
            InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
            imm.hideSoftInputFromWindow(view.getWindowToken(), 0);
            // 处理 "Done" 操作
            doSomething();
            return true;
        }
        return false;
    });
    

    这里的关键是使用 setOnEditorActionListener 方法来监听 "Done" 操作,并在监听器中添加隐藏键盘和处理操作的逻辑。另外,需要设置 EditText 的最大行数为 Integer.MAX_VALUE,以实现多行文本输入。

    评论

报告相同问题?

悬赏问题

  • ¥15 聚类分析或者python进行数据分析
  • ¥15 逻辑谓词和消解原理的运用
  • ¥15 三菱伺服电机按启动按钮有使能但不动作
  • ¥15 js,页面2返回页面1时定位进入的设备
  • ¥50 导入文件到网吧的电脑并且在重启之后不会被恢复
  • ¥15 (希望可以解决问题)ma和mb文件无法正常打开,打开后是空白,但是有正常内存占用,但可以在打开Maya应用程序后打开场景ma和mb格式。
  • ¥20 ML307A在使用AT命令连接EMQX平台的MQTT时被拒绝
  • ¥20 腾讯企业邮箱邮件可以恢复么
  • ¥15 有人知道怎么将自己的迁移策略布到edgecloudsim上使用吗?
  • ¥15 错误 LNK2001 无法解析的外部符号