首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何在editText中高亮显示搜索结果,而不丢失分隔线

在editText中实现高亮显示搜索结果并保留分隔线的方法可以通过以下步骤实现:

  1. 获取输入框中的文本和搜索关键词。
  2. 使用关键词对文本进行搜索并找到匹配的位置。
  3. 将匹配到的位置记录下来。
  4. 根据记录的位置,将输入框中的文本分割成多个部分,每个部分包含一个匹配的关键词和非匹配的文本。
  5. 在布局文件中,使用SpannableStringBuilder构建一个新的Spannable字符串。
  6. 遍历分割后的每个部分,根据是否为匹配的关键词选择不同的前景色(高亮显示)。
  7. 将每个部分添加到Spannable字符串中。
  8. 将Spannable字符串设置到editText中显示。

以下是一个示例代码,实现了上述步骤:

代码语言:txt
复制
import android.graphics.Color;
import android.text.Spannable;
import android.text.SpannableStringBuilder;
import android.text.style.ForegroundColorSpan;
import android.widget.EditText;

public class MainActivity extends AppCompatActivity {

    private EditText editText;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
        editText = findViewById(R.id.edit_text);
        
        // 输入框中的文本
        String text = editText.getText().toString();
        
        // 搜索关键词
        String keyword = "搜索关键词";
        
        // 获取匹配的位置
        List<Integer> positions = findKeywordPositions(text, keyword);
        
        // 构建Spannable字符串
        SpannableStringBuilder builder = new SpannableStringBuilder(text);
        
        // 遍历每个匹配位置,设置高亮显示
        for (Integer position : positions) {
            builder.setSpan(new ForegroundColorSpan(Color.RED), position, position + keyword.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
        }
        
        // 将Spannable字符串设置到editText中显示
        editText.setText(builder);
    }

    // 查找匹配的位置
    private List<Integer> findKeywordPositions(String text, String keyword) {
        List<Integer> positions = new ArrayList<>();
        int index = text.indexOf(keyword);
        while (index >= 0) {
            positions.add(index);
            index = text.indexOf(keyword, index + 1);
        }
        return positions;
    }
}

需要注意的是,上述示例代码仅演示了如何在editText中高亮显示搜索结果,如果需要保留分隔线,可能需要对布局文件进行相应的调整和设置。具体的实现方式可以根据实际需求进行调整。

腾讯云相关产品和产品介绍链接地址,可以根据实际情况选择适合的产品:

  • 腾讯云文本搜索服务:https://cloud.tencent.com/product/css
  • 腾讯云人工智能语音识别:https://cloud.tencent.com/product/asr
  • 腾讯云图像处理:https://cloud.tencent.com/product/imagex
  • 腾讯云音视频处理:https://cloud.tencent.com/product/mps
  • 腾讯云数据库:https://cloud.tencent.com/product/cdb
  • 腾讯云服务器:https://cloud.tencent.com/product/cvm
  • 腾讯云移动开发:https://cloud.tencent.com/product/msdk
  • 腾讯云存储:https://cloud.tencent.com/product/cos
  • 腾讯云区块链服务:https://cloud.tencent.com/product/bcs
  • 腾讯云物联网平台:https://cloud.tencent.com/product/iotexplorer
  • 腾讯云云原生应用:https://cloud.tencent.com/product/tke
  • 腾讯云云安全服务:https://cloud.tencent.com/product/dfw
  • 腾讯云网络通信:https://cloud.tencent.com/product/nat_gateway
  • 腾讯云元宇宙:https://cloud.tencent.com/product/vc
  • 腾讯云软件测试服务:https://cloud.tencent.com/product/cts
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Android开发笔记(一百四十六)仿支付宝的支付密码输入框

然而,计划赶不上变化,开发工作总有一些现有控件无法直接实现的需求,就像支付宝的支付密码输入框,在一排方格区域内输入并显示密文密码,每个密文字符之间又有竖线分隔。...当然,在界面展现上,需要以横排方格的形式加以显示。于是可以考虑,把支付密码的输入与显示操作分离开来,即密码输入操作仍由EditText处理,密码显示操作则由自定义的方格布局接管。...对于处理密码输入的EditText来说,需要实现以下几项操作: 1、把默认的下划线背景替换为圆角背景,且支持在获得焦点时高亮显示; 2、屏蔽输入光标,可调用setCursorVisible方法设置为不可见...;如果是密文,则显示哪个密文字符; 5、每当EditText里的文本发生变更之时,相应更新TextView队列的各项文本显示; 上述的改造内容,大部分都有可以直接调用的函数,但有两个功能的实现要特别注意...这个需求看起来很简单,只要强行给TextView队列调用setText方法即可,然而这不是安全的做法,因为它丢弃了CharSequence的丰富信息。

1.8K30
  • Markdown使用教程

    文字高亮能使行内部分文字高亮,使用一对反引号。...`html` `css` `javascript` html css javascript 分隔线 你可以在一行中用三个以上的星号、减号、底线来建立一个分隔线,行内不能有其他东西。...区块 第二项 八、代码 如果是段落上的一个代码片段可以用反引号把它包起来(`),示例: `alert()` alert() 代码区块 用三个反引号 ``` 包裹一段代码,并指定一种语言(也可以指定...未转义星号显示加粗** \*\* 转义显示星号 \*\* 未转义星号显示加粗 ** 转义显示星号 ** Markdown 支持以下这些符号前面加上反斜杠来帮助插入普通的符号: \ 反斜线 `...感叹号 以下部分在Github或其他在线预览暂未支持 数学公式 当你需要在编辑器插入数学公式时,可以使用两个美元符 $$ 包裹 TeX 或 LaTeX 格式的数学公式来实现。

    6.3K32

    vim查找高亮关键字_emacs和vim

    如果我们在在打开的文件中使用Vim搜索功能并开启搜索高亮显示后怎么取消当前高亮显示搜索关键字呢?...Vim搜索一个在文档不存在的搜索关键词来覆盖当前高亮显示搜索结果。...第二种方法:vim查询高亮搜索显示如果清除取消 在Vim尾行模式下使用 :noh 或 :nohlsearch 来关闭当前的高亮结果。但是在下次进行Vim搜索时仍然会有高亮显示效果。...第三种方法:使用vim快捷键清除vim高亮搜索显示 为了解决在Vim尾行模式下noh 或 :nohlsearch 来关闭当前的高亮结果后再次进入vim搜索时仍会有vim搜索高亮显示的效果。...本站仅提供信息存储空间服务,拥有所有权,承担相关法律责任。发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

    2.3K20

    Android 天气APP(十八)常用城市

    前言 常用城市对于那些经常在外面出差的朋友来说相信是陌生的,因为涉及到在不同城市之间居住,所以对于其他城市的天气是比较在意的,假如我要去一个城市的话,肯定要先了解天气怎么样,不然过去之后身体都受不了,...,但不一样,这里的搜索出来的结果不会产生搜索记录,当点击搜索出来的城市时,就去查询这个城市的天气,同时这个城市也会放入常用城市列表里面,这里可以用缓存来做处理,也可以通过数据库来处理。...import java.util.List; import static android.text.Spanned.SPAN_EXCLUSIVE_EXCLUSIVE; /** * 添加城市时搜索返回结果列表适配器...ivClearSearch.setVisibility(View.GONE);//隐藏清除输入框内容的图标 rvSearch.setVisibility(View.GONE);//隐藏搜索结果列表...mAdapterAdd.notifyDataSetChanged(); rvSearch.setVisibility(View.VISIBLE);//显示搜索城市列表

    69310

    vim命令搜索_linux的vim

    例如,如果你想要搜索的单词是 linux,下图显示的就是在 Vim 窗口底部的搜索命令: 敲击回车键之后,你会看到 Vim 会将光标停留在从光标在插入模式的位置开始,找到的包含此单词的第一行。...下图是一个例子: 自定义你的搜索 1、 高亮搜索结果 尽管通过 n 或 N 从被搜索单词或模式的匹配处跳转到另一处很简单,但是如果匹配处能够高亮就更加人性化了。...反之,如果搜索 /linux,那么不论大小写的搜索结果都会被匹配。 4、递进搜索 就如谷歌一样,随着你输入查询字串(字串随你每输入一个字符不断更新)显示不同的搜索结果,Vim 也同样提供了递进搜索。...如下图是一个列表结果何在 Vim 窗口底部被分组和显示的例子: 接下来,你可能已经得知,Vim 默认是环形搜索的,意味着在到达文件结尾处(或者被搜索单词的最后一处匹配)时,如果继续按 “搜索下一个”...本站仅提供信息存储空间服务,拥有所有权,承担相关法律责任。发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

    10.2K20

    Android Studio 快捷键

    Ctrl+J 29.Ctrl+Shift+F7可以高亮当前元素在当前文件的使用 30.Ctrl+Alt+Up /Ctrl+Alt+Down可以快速跳转搜索结果 31.Ctrl+Shift+J可以整合两行... Ctrl-Shift-/ 则可以用块注释标记(“ /*…*/ ”)把所选块包围起来。要反注释一个代码块就在块任何一个地方按 Ctrl-Shift-/ 即可。...22 、使用 Ctrl-Shift-F7 ( Search | Highlight Usages in File )可以快速高亮显示当前文件某一变量的使用地方。按 Escape 清除高亮显示。 ...34 、用 F2/Shift-F2 键在高亮显示的语法错误间跳转。  用 Ctrl-Alt-Down/Ctrl-Alt-Up 快捷键则可以在编译器错误信息或者查找操作结果间跳转。...用列表的其它项可以包围别的一些结构。  47 、在使用代码完成时,用 Tab 键可以输入弹出列表里的高亮显示部分。

    96460

    iintellij IDEA运行环境使用教程

    Ctrl+J 29.Ctrl+Shift+F7可以高亮当前元素在当前文件的使用 30.Ctrl+Alt+Up /Ctrl+Alt+Down可以快速跳转搜索结果 31.Ctrl+Shift+J可以整合两行... Ctrl-Shift-/ 则可以用块注释标记(“ /*…*/ ”)把所选块包围起来。要反注释一个代码块就在块任何一个地方按 Ctrl-Shift-/ 即可。...22 、使用 Ctrl-Shift-F7 ( Search | Highlight Usages in File )可以快速高亮显示当前文件某一变量的使用地方。...34 、用 F2/Shift-F2 键在高亮显示的语法错误间跳转。 用 Ctrl-Alt-Down/Ctrl-Alt-Up 快捷键则可以在编译器错误信息或者查找操作结果间跳转。...用列表的其它项可以包围别的一些结构。 47 、在使用代码完成时,用 Tab 键可以输入弹出列表里的高亮显示部分。

    1.1K10

    Intellij Idea 2018常用快捷键总结

    Ctrl+J 29.Ctrl+Shift+F7可以高亮当前元素在当前文件的使用 30.Ctrl+Alt+Up /Ctrl+Alt+Down可以快速跳转搜索结果 31.Ctrl+Shift+J可以整合两行... Ctrl-Shift-/ 则可以用块注释标记(“ /*…*/ ”)把所选块包围起来。要反注释一个代码块就在块任何一个地方按 Ctrl-Shift-/ 即可。...22 、使用 Ctrl-Shift-F7 ( Search | Highlight Usages in File )可以快速高亮显示当前文件某一变量的使用地方。按 Escape 清除高亮显示。 ...有了这个特性你就不会丢失任何代码了。 31 、如果要了解主菜单里每一个条目的用途,把鼠标指针移到菜单条目上再应用程序框架的底部的状态栏里就会显示它们的一些简短描述,也许会对你有帮助。 ...34 、用 F2/Shift-F2 键在高亮显示的语法错误间跳转。  用 Ctrl-Alt-Down/Ctrl-Alt-Up 快捷键则可以在编译器错误信息或者查找操作结果间跳转。

    2.4K30

    IntelliJ Idea快捷键

    Ctrl+J 29.Ctrl+Shift+F7可以高亮当前元素在当前文件的使用 30.Ctrl+Alt+Up /Ctrl+Alt+Down可以快速跳转搜索结果 31.Ctrl+Shift+J可以整合两行... Ctrl-Shift-/ 则可以用块注释标记(“ /…/ ”)把所选块包围起来。要反注释一个代码块就在块任何一个地方按 Ctrl-Shift-/ 即可。...22 、使用 Ctrl-Shift-F7 ( Search | Highlight Usages in File )可以快速高亮显示当前文件某一变量的使用地方。按 Escape 清除高亮显示。...有了这个特性你就不会丢失任何代码了。 31 、如果要了解主菜单里每一个条目的用途,把鼠标指针移到菜单条目上再应用程序框架的底部的状态栏里就会显示它们的一些简短描述,也许会对你有帮助。...34 、用 F2/Shift-F2 键在高亮显示的语法错误间跳转。 用 Ctrl-Alt-Down/Ctrl-Alt-Up 快捷键则可以在编译器错误信息或者查找操作结果间跳转。

    1.4K60

    Android Studio快捷键

    Ctrl+J 29.Ctrl+Shift+F7 可以高亮当前元素在当前文件的使用 30.Ctrl+Alt+Up /Ctrl+Alt+Down 可以快速跳转搜索结果 31.Ctrl+Shift+J 可以整合两行... Ctrl-Shift-/ 则可以用块注释标记(“ /…/ ”)把所选块包围起来。要反注释一个代码块就在块任何一个地方按 Ctrl-Shift-/ 即可。...22 、使用 Ctrl-Shift-F7 ( Search | Highlight Usages in File )可以快速高亮显示当前文件某一变量的使用地方。按 Escape 清除高亮显示。...有了这个特性你就不会丢失任何代码了。 31 、如果要了解主菜单里每一个条目的用途,把鼠标指针移到菜单条目上再应用程序框架的底部的状态栏里就会显示它们的一些简短描述,也许会对你有帮助。...34 、用 F2/Shift-F2 键在高亮显示的语法错误间跳转。 用 Ctrl-Alt-Down/Ctrl-Alt-Up 快捷键则可以在编译器错误信息或者查找操作结果间跳转。

    1K70

    Markdown转微信公众号排版神器

    斜体的使用则是在需要斜体的文字前后各加一个*。 如果要使用粗体和斜体,那么就是在需要操作的文字前后加三个*。...3.7 分割线 可以在一行中用三个以上的减号来建立一个分隔线,同时需要在分隔线的上面空一行。...可使用格式->图片上传本地图片,网站目前支持「图壳」图床,失败率低,但是只可保存一天用于排版 注:仅支持 https 的图片,图片粘贴到微信、知乎或掘金时会自动上传其服务器,不必担心使用上述图床会导致图片丢失...其中微信代码主题与微信官方一致,有以下注意事项: 带行号且不换行,代码大小与官方一致 需要在代码块处标志语言,否则无法高亮 粘贴到公众号后,用鼠标点代码块内外一次,完成高亮 diff 不能同时和其他语言的高亮同时显示...[TOC] 由于微信只支持到二级列表,本工具仅支持二级标题和三级标题的显示。 4.5 注音符号 支持平台:微信公众号。

    2.4K20

    TextInputLayout-Android M新控件

    显示了一个“登录”文字与两个EditText元素,一个是为用户名准备的,一个是为密码准备的。布局还包含了一个触发登陆流程的按钮。背景颜色是扁平风格的灰色。...就如你知道的,这个属性允许你在EditText的内容为空的时候显示一个自定义的提示。一旦用户开始输入,hint会消失。这并不理想,因为用户丢失了他们输入信息的上下文提示。...一个单一的EditText 在输入文字的时候会隐藏hint,被包含在TextInputLayoutEditText则会让hint变成一个在EditText上方的浮动标签。...不幸的是,如果你告诉它,安卓不会自动的隐藏虚拟键盘。在onClick方法体调用hideKeyboard。...现在我们定义了什么是错误的什么是正确的,也知道了如何获取EditText的数据以及显示可能的错误,onClick方法的实现就很简单了。

    76120

    Elasticsearch 8.X 最新学习路线图——一图在手,进阶跟我走!

    3.2 更新 Update API Update API 允许对已有文档进行部分更新,不需要重新索引整个文档。学习如何使用 Update API,可以提升数据更新的灵活性和效率。...4.2 多搜索 API 多搜索 API 允许我们在一次请求执行多个搜索操作。掌握多搜索 API 的使用方法,可以提升复杂搜索任务的效率,确保能够一次性完成多个搜索需求。...4.4 高亮 Highlight 高亮功能允许在搜索结果高亮显示匹配的部分。学习如何配置和使用高亮功能,可以提升用户体验,确保搜索结果更加直观。...4.5 排序 Sort 排序功能用于对搜索结果进行排序,确保结果的相关性和准确性。掌握排序功能的使用方法,可以提升搜索结果的展示效果,确保用户能够快速找到所需信息。...掌握 SLM 的使用方法,可以确保数据的持久性和安全性,防止数据丢失

    62310

    Android自定义View实现搜索框(SearchView)功能

    提示框的数据与输入框输入的文本是实时联动的,结果列表只有在每次进行搜索操作时才会更新数据 3. 输入框的UI应是动态的,即UI随着输入的文本的改变改变,:在未输入文本时,清除按钮 ?...应该是隐藏的;只有当框中有文本时才会显示。 4. 软键盘也应该是动态的,完成搜索时应自动隐藏。 5. 选择提示框的选项会自动补全输入框,且自动进行搜索 6....然后将所有匹配的Bean显示结果列表。...考虑到实际开发,数据量十分庞大,可以只把结果集的一部分(如前10个)显示出来,上拉到底的时候再加载之后的记录,也就是可以加入上拉加载的机制,使app性能更优化。 自动补全匹配也是采用相同的算法。...算法都比较简单,当然也可以弄得复杂点,比如根据“ ”(空格)去分割输入文本,再逐个考虑单个搜索词的匹配项,把匹配次数从多到少排列出结果集等等。这里细说。

    4.7K10

    Mdnice 简洁主题

    斜体的使用则是在需要斜体的文字前后各加一个*。 如果要使用粗体和斜体,那么就是在需要操作的文字前后加三个*。...——歌德 Markdown Nice最全功能介绍 这里写图片描述 3.7 分割线 可以在一行中用三个以上的减号来建立一个分隔线,同时需要在分隔线的上面空一行。...全栈工程师[3]在业务开发流程起到了至关重要的作用。 脚注内容请拉到最下面观看。 4.2 代码块 支持平台:微信公众号、知乎。...其中微信代码主题与微信官方一致,有以下注意事项: 带行号且不换行,代码大小与官方一致 需要在代码块处标志语言,否则无法高亮 粘贴到公众号后,用鼠标点代码块内外一次,完成高亮 diff 不能同时和其他语言的高亮同时显示...[TOC] 由于微信只支持到二级列表,本工具仅支持二级标题和三级标题的显示。 4.5 注音符号 支持平台:微信公众号。

    1.8K10

    idea常用快捷键

    Ctrl+J 29.Ctrl+Shift+F7可以高亮当前元素在当前文件的使用 30.Ctrl+Alt+Up /Ctrl+Alt+Down可以快速跳转搜索结果 31.Ctrl+Shift+J可以整合两行... Ctrl-Shift-/ 则可以用块注释标记(“ /…/ ”)把所选块包围起来。要反注释一个代码块就在块任何一个地方按 Ctrl-Shift-/ 即可。...22 、使用 Ctrl-Shift-F7 ( Search | Highlight Usages in File )可以快速高亮显示当前文件某一变量的使用地方。按 Escape 清除高亮显示。...有了这个特性你就不会丢失任何代码了。 31 、如果要了解主菜单里每一个条目的用途,把鼠标指针移到菜单条目上再应用程序框架的底部的状态栏里就会显示它们的一些简短描述,也许会对你有帮助。...34 、用 F2/Shift-F2 键在高亮显示的语法错误间跳转。用 Ctrl-Alt-Down/Ctrl-Alt-Up 快捷键则可以在编译器错误信息或者查找操作结果间跳转。

    68030

    Android使用TextInputLayout创建登陆页面

    显示了一个“欢迎”文字(可以很容易替换成logo什么的)与两个EditText元素,一个是为用户名准备的,一个是为密码准备的。布局还包含了一个触发登陆流程的按钮。背景颜色是扁平风格的灰色。...就如你知道的,这个属性允许你在EditText的内容为空的时候显示一个自定义的提示。一旦用户开始输入,hint会消失。这并不理想,因为用户丢失了他们输入信息的上下文提示。...一个单一的EditText 在输入文字的时候会隐藏hint,被包含在TextInputLayoutEditText则会让hint变成一个在EditText上方的浮动标签。...不幸的是,如果你告诉它,安卓不会自动的隐藏虚拟键盘。在onClick方法体调用hideKeyboard。...现在我们定义了什么是错误的什么是正确的,也知道了如何获取EditText的数据以及显示可能的错误,onClick方法的实现就很简单了。

    1.6K10
    领券