搜索字体高亮控件

QML-自定义模块 使用情景就是不可再修改的QML或者js文件,可定义成模块,分为如下情况1、自定义控件这里的自定义控件可以理解为最小单位控件,不可再修改,与QML的Button、Text等有同样的地位;不要与能够修改或者带逻辑的控件混淆;2、存放公共变量、函数的JS如某个JS文件里存放工程所需的公共函数;3、字体库等如FontAwesome。本文以自定义公共控件为例。 阅读详情

搜索字体高亮控件


public class TextViewSnippet extends TextView {
    private static final String TAG = TextViewSnippet.class.getSimpleName();
    private static String sEllipsis = "\u2026";
    private String mFullText;
    private String mSearchString;
    private Context mContext;
    private int mHighlightColor;

    public TextViewSnippet(Context context, AttributeSet attrs) {
        super(context, attrs);
        mContext = context;

        mHighlightColor = context.getResources().getColor(R.color.color_C05);

    }

    public TextViewSnippet(Context context) {
        super(context);
        mContext = context;

        mHighlightColor = context.getResources().getColor(R.color.color_C05);

    }

    public TextViewSnippet(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
        mContext = context;

        mHighlightColor = context.getResources().getColor(R.color.color_C05);

    }

    /**
     * We have to know our width before we can compute the snippet string.  Do that
     * here and then defer to super for whatever work is normally done.
     */
    @SuppressLint("DrawAllocation")
    @Override
    protected void onLayout(boolean changed, int left, int top, int right, int bottom) {
        if (MmsApp.MMS_DEBUG) {
            Log.d(TAG, "onLayout --------------------------------");
        }

        if (mFullText == null) {
            if (MmsApp.MMS_DEBUG) {
                Log.d(TAG, "mSearchString == null");
            }

            return;
        }

        String fullTextLower = mFullText.toLowerCase();
        String searchStringLower = mSearchString.toLowerCase();

        int startPos = 0;
        int searchStringLength = searchStringLower.length();
        int bodyLength = fullTextLower.length();

        startPos = fullTextLower.indexOf(searchStringLower);

        TextPaint tp = getPaint();
        float searchStringWidth = tp.measureText(mSearchString);
        float textFieldWidth = getWidth();
        String snippetString = null;

        if (searchStringWidth > textFieldWidth) {
            if (-1 == startPos) {
                return;
            }

            snippetString = mFullText.substring(startPos, startPos + searchStringLength);
        } else {
            if (MmsApp.MMS_DEBUG) {
                Log.v(TAG, "searchStringWidth <= textFieldWidth");
            }

            float ellipsisWidth = tp.measureText(sEllipsis);
            textFieldWidth -= (1F * ellipsisWidth); // assume we'll need one on both ends

            int offset = -1;
            int start = -1;
            int end = -1;

            while (true) {
                offset += 1;

                int newstart = Math.max(0, startPos - offset);
                int newend = Math.min(bodyLength, startPos + searchStringLength + offset);

                if (newstart == start && newend == end) {
                    break;
                }

                start = newstart;
                end = newend;

                String candidate = mFullText.substring(start, end);
                snippetString = String.format("%s%s%s", start == 0 ? "" : sEllipsis, candidate,
                        end == bodyLength ? "" : sEllipsis);

                if (tp.measureText(candidate) > textFieldWidth) {
                    break;
                }
            }
        }

        String snippetStringLower = snippetString.toLowerCase();
        SpannableString spannable = new SpannableString(snippetString);
        int start = 0;
        while (true) {
            int index = snippetStringLower.indexOf(searchStringLower, start);

            if (index == -1) {
                break;
            }

            spannable.setSpan(new ForegroundColorSpan(mHighlightColor),
                    index, index + searchStringLength, 0);

            start = index + searchStringLength;
        }

        setText(spannable);

        if (MmsApp.MMS_DEBUG) {
            Log.d(TAG, "onlayout end");
        }

        super.onLayout(changed, left, top, right, bottom);
    }

    public void setText(String fullText, String searchText) {
        if ((fullText == null) || (searchText == null)) {
            return;
        }
        mFullText = fullText;
        mSearchString = searchText;
        requestLayout();
    }
}
【愚公系列】2023年10月 WPF控件专题 RichTextBox控件详解 WPF控件是Windows Presentation Foundation(WPF)中的基本用户界面元素。它们是可视化对象,可以用来创建各种用户界面。WPF控件可以分为两类:原生控件和自定义控件。原生控件是由Microsoft提供的内置控件,如Button、TextBox、Label、ComboBox等。这些控件都是WPF中常见的标准用户界面元素。自定义控件则允许开发人员使用XAML和C#等编程语言来创建个性化的用户界面元素。自定义控件可以根据需求提供更多的功能和自定义化选项,以及更好的用户体验。 阅读详情

相关推荐

QT软件开发之基础控件--2.4.4 QTextEdit文本编辑器

2.4.4QTextEdit文本编辑器 QTextEdit是一种先进的WYSIWYG查看器/编辑器支持丰富的文本格式,类似 HTML 风格的标记。它可以用于优化处理大型文档和快速响应用户的输入。QTextEdit 既可以作为显示控件使用,也可以作为丰富文本编辑器使用。 QTextEdit 基于段落和字符工作的,一个段落就是一个格式化的字符串,一般以换行符作为段落分隔标志。阅读纯文本时,一个换行符代表一个段落,一个文档中包含0个或多个段落时,显示的内容按照段落的对齐方式显示并自动换行。每个字符在一个段落.

2256

android 字体高亮,Android TextView中部分文字高亮显示_Android_脚本之家

Android TextView中部分文字高亮显示/*** 关键字高亮显示** @param context 上下文* @param text 需要显示的文字* @param target 需要高亮的关键字* @param color 高亮颜色* @param start 头部增加高亮文字个数* @param end 尾部增加高亮文字个数* @return 处理完后的结果*/publi...

weixin_29023079的博客 589

自定义ListBox控件:VB风格升级

本文还有配套的精品资源,点击获取 简介:本控件提供了比Visual Basic自带ListBox控件更漂亮的外观和更丰富的交互效果。开发者可以修改源码以满足特定的应用需求,提升软件的用户体验。自定义功能包括样式定制、动画效果、扩展功能以及性能优化。压缩包内包含的VB源码文件为开发者提供了学习和自定义控件的机会。 1. ListBox控件样式定制化 在用户界面设计...

weixin_42599558的博客 1284

搜索功能和搜索框关键字高亮。

如百度之类的,搜索框里的联想关键字高亮 步骤:将关键字联想的每项内容用v-html绑定,触发转换颜色函数,给输入关键字加样式使其高亮,函数中用正则匹配关键字,再用高亮字替换显示的文本中的关键字 1.绑定v-html,触发高亮函数 2.定义高亮函数转换: 总结:关键是用正则匹配全局的联想出来的关键字,将关键字替换成有颜色的关键字即可。 ...

qq_41792374的博客 2391

实现搜索文字高亮显示效果

实现搜索文字高亮显示效果,该效果不但可以支持给文本视图添加文字搜索功能,也就是支持字符串和正则表达式搜索,而且还可以对搜索到的文字进行高亮显示等效果,非常不错的ios源码案例。

Android加密开发实战:Spongy Castle集成与国密算法应用指南

在移动应用开发中,数据加密是保障用户隐私和信息安全的基石。其原理基于密码学算法,通过对数据进行编码转换,确保即使数据被截获也无法被未授权方解读。这项技术的核心价值在于为敏感信息提供机密性、完整性和身份验证,广泛应用于用户登录、本地存储、网络通信等场景。对于Android开发者而言,系统自带的加密功能有时无法满足需求,特别是涉及国密算法或更丰富算法套件时。本文聚焦于Spongy Castle这一专为Android定制的加密库,它有效解决了与系统内置Bouncy Castle的兼容性问题,并提供了对SM4等国密

weixin_27722377的博客 308

Android TextView指定关键字高亮显示

项目中有这个需求,网上搜了一把,方法挺多的,这里选择一个简单的,已验证可用的方法,记录下,方便以后查阅。 TextView tv = (TextView) findViewById(R.id.hello); SpannableString s = new SpannableString(getResources().getString(R.string.linkify)); Pattern p

wblyuyang的专栏 5034

UReport2 报表设计器 在线表格

UReport2官网 一、UReport2报表设计器 UReport2是一个开源的可视化报表设计器,功能强大,操作简单,可以实现复杂的报表统计,有各种各样的导出和打印功能,支持导入Excel表格! 1、报表设计器 2、设计一个简单的用户列表展示 二、可编辑表格 扩展了layui的表格,支持多元化数据编辑(单选,多些、日期、下拉联动),开发简单、高效、便捷。有了它就可以轻松开发类似进销存系统的表格录入功能了,用户拿来即用! 三、主从表录......

ejinxian的专栏 2万+

实现查找关键字高亮显示

博主在项目期间遇到一个需求,就是搜索关键词时需要高亮显示,我相信很多小伙伴有同样的经历,因此,整理了一下。 没啥说的,直接上代码,很简单的。 实现查找关键字高亮显示 #box{ height:200px; width:500px; margin:50px auto; border:2px solid #eee; te

狂野的心跳的博客 1万+

【QMIX】一种基于Value-Based多智能体算法

文章目录1. QMIX 解决了什么问题(Motivation)2. QMIX 怎样解决团队收益最大化问题(Method)2.1 算法大框架 —— 基于 AC 框架的 CTDE(Centralized Training Distributed Execution) 模式 QMIX 是一种基于 Value-Based 的多智能体强化学习算法(MARL),其基本思想来源于 Actor-Critic 与 DQN 的结合。使用中心式学习(Centralized Learning)分布式执行(Distributed

qq_38638132的博客 9860

endnote让参考文献整整齐齐

这篇文章主要是针对利用 endnote 插入参考文献时,参考文献第一行和后面的行对不齐的问题 下面是示意图 可以看到我们的参考文献对的整整齐齐的,比较好看。 下面介绍具体步骤 1、打开endnote。编辑我们使用的参考文献样式。我这儿是叫 ZZ_MODIFIED_GEEBINF 复制 2、找到布局,每个参考开头,将光标放在在参考开头后面,点插入字段,制表符 3、右下角悬挂式输出哪儿选择全部段...

雾隐雾现的至渝博客 5万+

(C#) Format the cell of DataGridView based on the TextBox.Text

private void textBox1_TextChanged(object sender, EventArgs e) { DataGridViewCellStyle style = new DataGridViewCellStyle(); style.Font = new Font(dataGridView1...

banta6955的博客 128

RAG——RAG 索引(文档解析技术)

本文介绍了RAG系统中文档解析的关键技术,重点分析了如何通过LangChain的Document Loaders处理多种格式文档。文章指出高质量文档解析对RAG系统效果的决定性作用,并详细讲解了PDF、TXT、Word等常见格式的解析方法。作者提供了代码示例和Gitee开源项目链接,特别强调了PDF解析的深入方案,同时介绍了相关依赖库的安装配置。文章还展示了如何定义通用文档加载方法,为开发者提供了实用的技术参考。

小志的博客 751

Tkinter.Text控件中,文本存在某个关键字的将被高亮显示(标记颜色+字体加粗)

在Tkinter的Text控件中,要标记某个关键字并改变其颜色,你可以使用tag_add方法来给包含关键字的文本添加标签,然后使用tag_config方法来配置该标签的显示样式,包括前景色(字体颜色)和背景色等。------------★Tkinter系列教程★------------Python源码:教你用Tkinter创建一个简单的桌面窗口程序。Python源码:Tkinter窗口中输入框和菜单组件的使用。Python源码02:使用Tkinter制作软件的登入页面。

我的Python教程 1824

京东商品多维特征提取:基于时空大模型的实时库存预测接口设计

在电商行业,库存管理是供应链的核心环节之一。库存水平过高会导致资金占用、仓储成本增加,而库存水平过低则可能引发缺货风险,影响客户满意度和平台声誉。京东作为中国领先的电商平台,拥有海量的商品数据和复杂的业务场景,传统的库存预测方法难以应对市场动态变化和业务需求。时空大模型作为一种融合时间序列分析和空间特征提取的前沿技术,能够捕捉商品多维特征在时空维度上的变化规律,为实时库存预测提供更精准的决策依据。

FB13713612741的博客 954

数据分析是什么?

说道“数据分析”一词,大家应该并不陌生,数据分析从字面上来理解,就是对数据做出分析然后得出一个结论,看起来浅显易懂,下面我们把这个词语分开得到的是“数据”与“分析”。“数据”的范围就很广泛了,小到一个计量数字,大到成亿级别的数据汇总,都可以称为数据;“分析”一词并不难理解,以智慧思维的方法对某一事物做出合理的解释,给出结论是为分析,一般会用到数学上的分析方法,比如统计学或者概率论等等。 1. 什么是数据分析 1) 数据分析发展背景 进入到 21 世纪以后,伴随着互联网的迅速发展,大数据应运而生,越来越多的数

MC_XY的博客 5432

android 字体高亮,Android TextView实现词组高亮的示例代码

本文介绍了Android TextView实现词组高亮的示例代码,分享给大家,具体如下:HighlightTextViewAndroid文本高亮控件,基于View实现。特点文本高亮单词自动换行高亮词组保持在同一行显示效果如下:主要逻辑:两个 Paint 负责绘制不同的文字在每次绘制之前计算将要绘制的文本是否会超出屏幕宽度,如果超出则换行protected void onDraw(Canvas ca...

weixin_29084231的博客 226

【ARMv8 异常模型入门及渐进7 - GIC及安全中断介绍】

GIC-v3中,引入了支持2种安全状态(secure state),也就是对于中断,根据secure状态,分为安全中断和非安全中断。当然也可以只支持一种安全状态。这里的2种安全状态和1种安全状态,主要是影响中断分组,所使用IRQ和FIQ管脚的映射,以及gic中的寄存器访问。

CodingCos的博客 2116

mfc c语言 编辑器,语法高亮编辑控件Scintilla在MFC中的简单使用

项目中要使用代码编辑器,搜索之后,发现了强大的编辑器控件Scintilla。1.简介Scintilla是一款开源的语法高亮编辑器控件,官方网站:http://www.scintilla.org/。Scintilla是最优秀的编辑控件之一,实现了语法高亮,代码折叠,书签,自动完成等等诸多功能,速度快,源代码也比较好理解,易于扩展,易于增加对新语言的支持。 比较著名的scite,Notepad++,N...

weixin_39963465的博客 1278

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

制作iOS搜索应用 搜索结果关键词高亮不同样式

根据公司要求 老大分配我任务 实现应用中搜索结果实现g

u010486174的专栏 687

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

WPF高亮显示TextBlock字体

WPF高亮显示TextBlock字体

CsdnLlgl的博客 701

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

通过RegExp实现 element UI tree 高亮显示(样式改变)搜索框过滤内容

通过RegExp对象动态的实现字体样式的添加与删除。 element UI 中,树形控件进行过滤操作时,经常要求所搜字体进行一个高亮显示。

天命爱心职责的博客 1766

语法高亮编辑控件Scintilla在MFC中的简单使用

项目中要使用代码编辑器,搜索之后,发现了强大的编辑器控件Scintilla。 摘自:http://www.qingfengju.com/article.asp?id=14  1.简介 Scintilla是一款开源的语法高亮编辑器控件,官方网站:http://www.scintilla.org/。Scintilla是最优秀的编辑控件之一,实现了语法高亮,代码折叠,书签,自动完成等等

LL-Studio的专栏 6510

WebStorm颜色和字体设置

按 Ctrl+Alt+S,打开设置对话框,选择“Editor | Color Scheme”。选择配色方案,点击设置按钮,选择复制(Duplicate)。(可选)要重命名方案,点击设置按钮,选择重命名(Rename)。预定义的配色方案,名称加粗显示。修改了的预定义配色方案,以蓝色字体显示。要还原为默认设置,请单击设置按钮,选择“Restore Defaults”。预定义的配色方案不能删除。按 Ctrl+Alt+S,打开设置对话框,选择“Editor | Color Scheme”。

四荒八极的博客 1825

C#实现TextBox、RichTextBox语法高亮

<br /><br /><br />利用VS2005编写文本编辑器,可以在TextBox、RichTextBox里实现语法高亮的。下面是使用RichTextBox控件实现语法高亮的方法,TextBox控件的实现方法和此类似。<br />1             rich.Select(0,1);<br />2             rich.SelectionFont = new Font("宋体", 12, (FontStyle.Regular));<br />3             rich.S

snzy521的专栏 8647

基于IE内核浏览器控件,自定义高亮查找

实现浏览器自定义查找功能,参见开源项目:http://www.ookii.org/Software/FindAsYouType,在此贴出相关核心代码。 BOOL LbWebNoteHandler::DoHighlightText( const CString& strText , CComPtr& pTxtRange , CComPtr& pDoc ) {     BSTR pS

michaelenshi的专栏 1949
上一篇: 正则表达式基础
Nela
博客等级 码龄11年 9粉丝 71原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值