创世魂 发表于 2026-1-9 17:37:54

【解决方案】火山安卓编辑框禁止输入中文



这个也比较简单,结合内容被改变事件和正则表达式就可以轻松实现。


<火山程序 类型 = "通常" 版本 = 1 />

变量 编辑框1 <类型 = 编辑框 隐藏值属性 = "0" @安卓.窗口.布局 = "p_layout_width_type = match_parent" 支持内容改变监听 = 真>

方法 编辑框_内容被改变时 <接收事件 类型 = 整数 注释 = "需要设置\"支持内容改变监听=真\"本事件才会触发.">
参数 来源对象 <类型 = 编辑框 注释 = "提供事件产生的具体来源对象">
参数 标记值 <类型 = 整数 注释 = "用户调用\"挂接事件\"命令时所提供的\"标记值\"参数值,非此方式挂接事件则本参数值固定为0.">
参数 新增内容 <类型 = 文本型 注释 = "提供新增的内容">
参数 发生变化位置 <类型 = 整数>
参数 变化前的字符数 <类型 = 整数>
参数 变化的字符数 <类型 = 整数>
{
    如果 (来源对象 == 编辑框1)
    {
      如果 (正则表达式类.是否完全匹配 ("[\u4e00-\u9fa5]", 新增内容))
      {
            来源对象.内容 = 变化前内容
            来源对象.光标位置 = 发生变化位置
      }
    }
    返回 (0)
}

变量 变化前内容 <类型 = 文本型>

方法 编辑框_内容被改变前 <接收事件 类型 = 整数 注释 = "需要设置\"支持内容改变监听=真\"本事件才会触发.">
参数 来源对象 <类型 = 编辑框 注释 = "提供事件产生的具体来源对象">
参数 标记值 <类型 = 整数 注释 = "用户调用\"挂接事件\"命令时所提供的\"标记值\"参数值,非此方式挂接事件则本参数值固定为0.">
参数 当前文本 <类型 = 文本型>
参数 文本变化位置 <类型 = 整数>
参数 变化的字符数 <类型 = 整数>
参数 变化后字符数 <类型 = 整数>
{
    如果 (来源对象 == 编辑框1)
    {
      变化前内容 = 当前文本
    }
    返回 (0)
}

叶枯藤 发表于 2026-1-10 14:23:07

有漏洞,输入法一起输出两个及两个中文以上的没法禁止

叶枯藤 发表于 2026-1-10 14:24:19

而且字母和各种标题符号都可以写入,视窗可以选择只输入小数,为什么安卓不可以呢?

创世魂 发表于 2026-1-10 19:10:20

叶枯藤 发表于 2026-1-10 14:24
而且字母和各种标题符号都可以写入,视窗可以选择只输入小数,为什么安卓不可以呢? ...

因为功能不一样啊。。安卓并没有内置禁止输入的功能。

创世魂 发表于 2026-1-10 19:10:40

叶枯藤 发表于 2026-1-10 14:24
而且字母和各种标题符号都可以写入,视窗可以选择只输入小数,为什么安卓不可以呢? ...

自己根据这个代码原理,自己进行过滤。

创世魂 发表于 2026-1-10 19:11:16

叶枯藤 发表于 2026-1-10 14:23
有漏洞,输入法一起输出两个及两个中文以上的没法禁止

弄个哈希表来存储 变化前内容 ,自己想办法处理一下就行了。
页: [1]
查看完整版本: 【解决方案】火山安卓编辑框禁止输入中文