编辑框图文混排
2023-01-24 09:16:15 最后更新
sss a="iApp的图标是[图标]\n[图标1]是返回键图标"
sbp("@icon_iapp.png",图像)
//获取图像
//指定高度与宽度缩放
tsf(图像,180,180,图像)
sbp("@d10f62e8cbe.jpg",yy)
//指定高度与宽度缩放
tsf(yy,80,80,yy)
call(null,"mlua","Super.EditText4Bitmap",sss.a,"\[图标\]",图像)
call(null,"mlua","Super.EditText4Bitmap",sss.a,"\[图标1\]",yy)
call(null,"mlua","Super.a")
//调用super.mlua模块的Bitmap4EditText,1是编辑框id,\[图标\]是匹配替换内容(可以使用正则表达式),图像是图像变量
//注意:匹配需要遵循正则规则
//以下代码放在 Super.mlua
--[[
@LuaDoc
本模块作用 :增强编辑框和文本控件
函数1:Bitmap4EditText
函数1作用:编辑框或文本控件实现图文混排
函数1参数:编辑框控件或文本控件id,匹配内容,图片对象
作者:@残页
贴吧ID:szwq26 和 残页技术
改进者:吾乃幼儿园扛把子
注意:如果异常,请使用最新版的iApp
--]]
require "import";
import "android.text.Spannable";
import "android.text.SpannableStringBuilder";
import "android.text.style.ImageSpan";
import "java.util.regex.Pattern";
import "java.util.regex.Matcher";
--以上都是导入一些需要的类

function EditText4Bitmap(text,rexgString,myBitmap)
        local builder = SpannableStringBuilder(text);
        --实例化SpannableStringBuilder类

        local pattern = Pattern:compile(rexgString);

        local matcher = pattern:matcher(text);
        while matcher:find() do
        local imagespan = ImageSpan(myBitmap);
         --实例化ImageSpan类
        local me = i:java(matcher,"java.util.regex.Matcher.end");
        --直接matcher:end()报错,只好用java()(反射)
         builder:setSpan(imagespan,matcher:start(),me,Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
          end
         --循环匹配所有符合条件的字符串
         i:syso(builder);
         i:sss("a",builder)
         end

        function a()
        i:gvs(1):setText(sss("a"));
        --设置特效文字到编辑框上,1为编辑框id,可以自行修改,别问我为什么不用i:us()
    end
--作者残页,转载需获得本人同意
 iApp一本通