当前位置: 首页 > news >正文

Android中EditText同时支持textMultiLine与imeOptions(action/actionSend/...)

Android中EditText同时支持textMultiLine与imeOptions(action/actionSend/...)

在Android中,如果想要imeOptions起作用,则要求android:singleLine="true"或者android:inputType="text",此时不能多行显示内容,即使插入\n,内容也是显示在一行。形如:

<EditTextandroid:id="@+id/et_text"android:layout_width="match_parent"android:layout_height="wrap_content"android:imeOptions="actionSend"android:inputType="text"android:singleLine="true" />

而想要多行文字,则可以不设置android:singleLine或者android:inputType,又或者android:inputType="textMultiLine"等等,但是此时android:imeOptions设置的值却不起作用了。形如:

<EditTextandroid:id="@+id/et_multi"android:layout_width="match_parent"android:layout_height="wrap_content"android:imeOptions="actionSend"android:inputType="textMultiLine"android:maxLines="1"android:singleLine="false" />

1.在java代码里面直接设置

如果想要在imeOptions起作用的时候同时支持显示多行文本(当然此刻不能使用ENTER实现换行功能了),需要在XML代码里面不设置相关代码,并在JAVA代码里面这样设置:

etText.setImeOptions(EditorInfo.IME_ACTION_SEND);
etText.setRawInputType(InputType.TYPE_CLASS_TEXT);
//or
etNone.setImeOptions(EditorInfo.IME_ACTION_SEND);
etNone.setRawInputType(InputType.TYPE_TEXT_FLAG_MULTI_LINE);

2.或者自定义一个EditText类,实现onCreateInputConnection方法:

package com.example.test;import android.content.Context;
import android.util.AttributeSet;
import android.view.inputmethod.EditorInfo;
import android.view.inputmethod.InputConnection;
import android.widget.EditText;public class ActionEditText extends EditText {public ActionEditText(Context context) {super(context);}public ActionEditText(Context context, AttributeSet attrs) {super(context, attrs);}public ActionEditText(Context context, AttributeSet attrs, int defStyleAttr) {super(context, attrs, defStyleAttr);}@Overridepublic InputConnection onCreateInputConnection(EditorInfo outAttrs) {InputConnection ic = super.onCreateInputConnection(outAttrs);outAttrs.imeOptions &= ~EditorInfo.IME_FLAG_NO_ENTER_ACTION;return ic;}
}

然后在XML代码里面这样使用:

<com.example.test.ActionEditTextandroid:id="@+id/et_text"android:layout_width="match_parent"android:layout_height="wrap_content"android:imeOptions="actionSend"/>

参考链接https://exchangetuts.com/multi-line-edittext-with-done-action-button-1639497243952289

http://www.jsqmd.com/news/44936/

相关文章:

  • Day43(13)-基本上都是在敲SQL-db04
  • 空间变换层和自注意力机制
  • linux ftp 客户端安装
  • MacX Video Converter Pro for Mac v6.8.2 安装视频转换器安装步骤(附安装包)
  • 数字分身---沃伦巴菲特
  • SPYSE团队独家专访:构建互联网基础设施搜索引擎的技术实践
  • 数学的大厦(四):减法与整数
  • 深入解析:Kotlin 高阶函数在回调设计中的最佳实践
  • 医药生产线HMI与PLC互联:总线协议Modbus RTU 转Modbus TCP 适配方案
  • 信息化、数字化、智能化、智慧化、数智化,到底啥区别 - 智慧园区
  • 洛谷 B4413:[GESP202509 三级] 数组清零
  • MOSHELL (7) : 构建3G RNC端到端性能可观测性体系 - 指南
  • 中大型超市智能运营导购系统:AI 精准推送,滞销品库存加速 19%!
  • 雨水从黑云降临到了人间 果实脱落枝叶吸收于地面 时间流逝再也回不到从前 曾经珍藏回忆变成不可逆爱恋
  • 高州市胃癌手术专家选择指南:茂名陈医生专业医学背景+丰富临床经验+精湛手术技术!
  • c#构建日报
  • linux ftp 修改密码
  • linux ftp shell
  • 我讨厌 DP 和 COUNT 的100个理由(下)
  • 详细介绍:数组初阶(2)
  • Gemini 3 Pro入门教程:从零开始学会使用最新gemini-3-pro-preview API接入
  • 20232314 2025-2026-1 《网络与系统攻防技术》实验七实验报告
  • 高州市陈郁强副主任擅长做肠癌手术:口碑优秀+医术高超!
  • 102302156 李子贤 数据采集第三次作业
  • SHELL脚本的基础入门
  • roocode_kilocode对比
  • 工程成本管理软件新纪元:选软件看这三点!
  • 全国计算机等级考试——二级JAVA完整大题题库【五十三道】
  • 【C + +】unordered_set 和 unordered_map 的用法、区别、性能全解析 - 实践
  • Spring AI 代码分析(一)--工程结构