ZWate 2017-02-20 02:10 采纳率: 0%
浏览 1029

安卓搜索关键字变色 首字母变色

String s = cursor.getString(idxName);
int index;
ForegroundColorSpan span = new ForegroundColorSpan(Color.parseColor("#00FF00"));//要显示的颜色
SpannableStringBuilder builder = new SpannableStringBuilder(s);
index = s.indexOf(text);
if (index != -1) {
builder.setSpan(span, index, index + text.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
textView.setText(builder);
} else {
textView.setText(s);
}

在网上看了一下 这样可以使含有关键字的字符串变色
现在想实现的效果是 text = “axcj”
s = “aqw xqw coi jdf”
输入text ,s的每一个手字母变色 求大神指点一下如何修改,自己试了几次效果都不理想。。

  • 写回答

2条回答 默认 最新

  • 大白大白大白 2017-02-20 06:48
    关注
    SpannableString spannableString = new SpannableString(content);
    int textColor = context.getResources().getColor(R.color.red);
    spannableString.setSpan(clickSpan, start, end, Spannable.SPAN_INCLUSIVE_INCLUSIVE);
    registerOnTouch(textView);
    首先将你的s转换为spannableString,然后setSpan,注意最后一个参数为Spannable.SPAN_INCLUSIVE_INCLUSIVE,千万不要忘记加上registerOnTouch(textView);
    private void registerOnTouch(TextView tv) {
        tv.setOnTouchListener(new OnTouchListener() {
            @SuppressLint("ClickableViewAccessibility")
            @Override
            public boolean onTouch(View v, MotionEvent event) {
                boolean ret = false;
                CharSequence text = ((TextView) v).getText();
                Spannable stext = Spannable.Factory.getInstance().newSpannable(text);
                TextView widget = (TextView) v;
                int action = event.getAction();
    
                if (action == MotionEvent.ACTION_UP || action == MotionEvent.ACTION_DOWN) {
                    int x = (int) event.getX();
                    int y = (int) event.getY();
    
                    x -= widget.getTotalPaddingLeft();
                    y -= widget.getTotalPaddingTop();
    
                    x += widget.getScrollX();
                    y += widget.getScrollY();
    
                    Layout layout = widget.getLayout();
                    int line = layout.getLineForVertical(y);
                    int off = layout.getOffsetForHorizontal(line, x);
    
                    ClickableSpan[] link = stext.getSpans(off, off, ClickableSpan.class);
    
                    if (link.length != 0) {
                        if (action == MotionEvent.ACTION_UP) {
                            link[0].onClick(widget);
                        }
                        ret = true;
                    }
                }
                return ret;
            }
        });
    }
    
    评论

报告相同问题?

悬赏问题

  • ¥100 set_link_state
  • ¥15 虚幻5 UE美术毛发渲染
  • ¥15 CVRP 图论 物流运输优化
  • ¥15 Tableau online 嵌入ppt失败
  • ¥100 支付宝网页转账系统不识别账号
  • ¥15 基于单片机的靶位控制系统
  • ¥15 真我手机蓝牙传输进度消息被关闭了,怎么打开?(关键词-消息通知)
  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度