zoukankan      html  css  js  c++  java
  • 如何实现Android4.1语音输入的纠错和一键删除效果

    这几天刚还在研究这个东东,简单写几句。

    主要使用两个Span即可实现:SuggestionSpan 和 EasyEditSpan

    部分实现代码如下,

    1.关于SuggestionSpan的

                    //不能共用Span,否则只有最后一个生效/////////非常重要
                    SuggestionSpan ss1 = new SuggestionSpan(this, new String[]{"123", "456", "789"},SuggestionSpan.FLAG_AUTO_CORRECTION);
                    ss1.setFlags(SuggestionSpan.FLAG_AUTO_CORRECTION);//蓝色 ///////////
                    SuggestionSpan ss2 = new SuggestionSpan(this, new String[]{"hello", "hi", "bye"},SuggestionSpan.FLAG_AUTO_CORRECTION);
                    ss2.setFlags(SuggestionSpan.FLAG_EASY_CORRECT);//灰色
                    SuggestionSpan ss3 = new SuggestionSpan(this, new String[]{"你好", "再见", "谢谢"},SuggestionSpan.FLAG_AUTO_CORRECTION);
                    ss3.setFlags(SuggestionSpan.FLAG_MISSPELLED);//无色
                     
                    SpannableString str = new SpannableString("我们是一家人 对不对 是不是");
                    
                    str.setSpan(ss1, 0, 6, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE | Spanned.SPAN_COMPOSING);//只有最后一个生效
                    str.setSpan(ss2, 7, 10, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE | Spanned.SPAN_COMPOSING);
                    str.setSpan(ss3, 11, 14, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE | Spanned.SPAN_COMPOSING);
                    
                    ic.commitText(str, 1);

     2.关于EasyEditSpan的

                    SpannableString spanText = new SpannableString("我们是一家人");
                    spanText.setSpan(new EasyEditSpan(), 0, spanText.length(), Spannable.SPAN_INCLUSIVE_EXCLUSIVE);
                    ic.commitText(spanText, 1);


    注意:所有需要发送到输入框的Span必须实现了ParcelableSpan,没有实现这个接口的Span之能用于TextView中。

  • 相关阅读:
    【修订】为什么OO方法是有本质缺陷的?
    jQuery到底有什么好?
    qsort还是std::sort,一个排序引发的血案
    小小的吹一下集结号~
    谈谈学习与讨论风格:信任、质疑与交流
    职场中的我们,应该有多和谐?
    我到底是在干嘛?
    最近一些想法
    老饭新炒:object based、object oriented与弱类语言
    Flash性能分析与调试工具
  • 原文地址:https://www.cnblogs.com/CoolPigs/p/2654397.html
Copyright © 2011-2022 走看看