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

news/2025/11/19 20:21:53/文章来源:https://www.cnblogs.com/fylx/p/19243890

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.mzph.cn/news/970356.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Day43(13)-基本上都是在敲SQL-db04

多表查询 笛卡尔积-- 查询 select * from emp ,dept where emp.dept_id = dept.id;-- 查询 select * from emp ,dept where emp.dept_id = dept.id;-- ============================= 内连接 ========================…

空间变换层和自注意力机制

空间变换层和自注意力机制Spatial Transformer Layer(空间变换层)是一种在卷积神经网络中引入空间变换的机制。它允许网络自动学习输入图像的几何变换,以提高网络的鲁棒性和性能。它可以通过学习如何对输入进行旋转…

linux ftp 客户端安装

在 Linux 系统中,ftp 是一个传统的 FTP 客户端工具,但随着现代 Linux 发行版的更新,ftp 已被 ftp 工具(如 vsftpd)所替代,或者更常见的是使用 curl、wget、lftp 等现代工具来实现 FTP 功能。 一、使用 ftp 工具(…

MacX Video Converter Pro for Mac v6.8.2 安装视频转换器安装步骤(附安装包)

MacX Video Converter Pro for Mac v6.8.2 安装视频转换器安装步骤(附安装包)​ MacX Video Converter Pro是一款专为 Mac 电脑用户设计的 专业视频格式转换软件,支持 快速转换各种视频格式,比如 MP4、AVI、MOV、M…

数字分身---沃伦巴菲特

# 沃伦巴菲特 数字化身 ━━━━━━━━━━━━━━━━ **输入接口**:任意提问 **输出模式**:以巴菲特视角作答 ━━━━━━━━━━━━━━━━ ## 身份定位 你是沃伦巴菲特。 价值投资教父本杰明格雷厄姆的嫡…

SPYSE团队独家专访:构建互联网基础设施搜索引擎的技术实践

本文深入访谈SPYSE团队,探讨其CertDB SSL证书搜索引擎的技术架构、数据采集方式和产品定位。团队详细介绍了全网扫描技术、API设计理念、与Censys等竞品的对比分析,以及未来在DNS和域名分析领域的技术规划。独家专访…

数学的大厦(四):减法与整数

为了解决旧领域内“不自然”或“不可能”的问题,我们必须构想并构建一个更广阔的新领域。自然数宇宙的边界,正是被“减法”这道鸿沟给清晰地勾勒了出来。 在我们的自然数世界里,加法 a + b 和乘法 a * b 是畅通无阻…

深入解析:Kotlin 高阶函数在回调设计中的最佳实践

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

医药生产线HMI与PLC互联:总线协议Modbus RTU 转Modbus TCP 适配方案

一、项目背景:无菌注射剂灌装生产线的通讯困境 在工业自动化领域的医药无菌注射剂灌装生产线中,某企业采用施耐德 HMI(Modbus RTU 协议)负责灌装参数设定(如剂量 5ml0.02ml)、设备操作监控,搭配西门子 S7-1500 …

信息化、数字化、智能化、智慧化、数智化,到底啥区别 - 智慧园区

这几年啊,很多人开口闭口就是“我们要搞数智化转型”“我们系统已经智能化了”“这个流程已经数字化改造过了” ……听着都挺高大上,但你真要追问一句:“信息化、数字化、智能化、智慧化、数智化,咱们到底搞的是哪…

洛谷 B4413:[GESP202509 三级] 数组清零

​【题目来源】https://www.luogu.com.cn/problem/B4413【题目描述】小 A 有一个由 n 个非负整数构成的数组 a=[a1, a2, …, an]。他会对阵组 a 重复进行以下操作,直到数组 a 只包含 0。在一次操作中,小 A 会依次完成…

MOSHELL (7) : 构建3G RNC端到端性能可观测性体系 - 指南

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

中大型超市智能运营导购系统:AI 精准推送,滞销品库存加速 19%!

想象一下:周六下午的超市人潮汹涌,新客推着购物车一脸茫然,老客直奔货架却找不到心仪商品,导购被围得喘不过气,促销海报无人问津——这不是个例,而是中大型超市每天上演的“失控剧本”。中大型超市每天面对的痛点…

雨水从黑云降临到了人间 果实脱落枝叶吸收于地面 时间流逝再也回不到从前 曾经珍藏回忆变成不可逆爱恋

test42 寻雾启示 首先最终的走法一定是找到位置序列 \(p_1,\dots,p_m\) 满足 \(p_i<p_{i+1},p_m=n\) 然后依次铺羊毛到 \(p_i\),为了不思考那么多,我们设 \(f_i\) 表示铺到 \(i\) 回到 \(1\) 的最小时间,转移显然…

高州市胃癌手术专家选择指南:茂名陈医生专业医学背景+丰富临床经验+精湛手术技术!

高州市胃癌手术专家选择指南:茂名陈医生专业医学背景+丰富临床经验+精湛手术技术!随着胃癌发病率上升,寻找一位技术精湛、经验丰富的胃癌手术专家成为茂名高州地区患者及家属的核心诉求。面对“专家信息难辨”、“技…

c#构建日报

日期​ 2005.11.19 今日工作时长​ 360 分钟​ 核心工作内容​ 执行 GitHub 项目分支变基操作(git rebase),解决代码冲突后推进变基流程;​ 处理多人协作中远程分支更新导致的本地代码同步问题;​ 恢复误操作丢失…

linux ftp 修改密码

在 Linux 系统中,FTP(File Transfer Protocol) 本身并不是一个直接支持修改用户密码的协议。通常,FTP 服务器(如 vsftpd、ProFTPD 等)会通过配置文件(如 /etc/vsftpd.conf 或 /etc/proftpd/proftpd.conf)来管理…

linux ftp shell

你提到的“Linux FTP Shell”可能是指在 Linux 系统中使用 FTP(File Transfer Protocol)进行文件传输的 Shell 脚本或命令。下面我将为你提供一些常见的 Linux FTP 命令和 Shell 脚本示例,用于在 Linux 系统中进行文…

我讨厌 DP 和 COUNT 的100个理由(下)

好耶!是长篇!51 王之钦定 感觉比较困难。

详细介绍:数组初阶(2)

详细介绍:数组初阶(2)pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", &q…