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;
            }
        });
    }
    
    评论

报告相同问题?

悬赏问题

  • ¥30 这是哪个作者做的宝宝起名网站
  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!