首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Android Spannable编辑后解除

Android Spannable编辑后解除
EN

Stack Overflow用户
提问于 2014-09-18 23:21:29
回答 1查看 101关注 0票数 0

我在twitter @username中实现了提及。但不能键入提及,只能从MultiAutoCompleteTextView中选择。

我在treminateToken上创建蓝色文本颜色的spannable

代码语言:javascript
复制
Spannable sp = new SpannableString(text + " ");
sp.setSpan(new ForegroundColorSpan(Color.BLUE), 0, text.length(), Spannable.SPAN_INCLUSIVE_INCLUSIVE);

但问题是用户可以编辑此文本。如何使此快照不可编辑?要在用户按backspace时删除整个范围吗?或者至少将颜色改回黑色(如果它已经被编辑过)。

EN

回答 1

Stack Overflow用户

发布于 2014-09-25 15:20:28

尝尝这个

使用editext的key listener将字符串传递给下面的方法

代码语言:javascript
复制
public void displayText(String s)
{
    String ss[]=s.split(",");
    for(int i=0;i<ss.length;i++)
    {
        final SpannableStringBuilder sb = new SpannableStringBuilder();
        TextView tv = createContactTextView(ss[i]);
        BitmapDrawable bd = (BitmapDrawable) GlobalMethods.convertViewToDrawable(tv);
        bd.setBounds(0, 0, bd.getIntrinsicWidth(),bd.getIntrinsicHeight());

        sb.append(ss[i] + ",");
        sb.setSpan(new ImageSpan(bd), sb.length()-(ss[i].length()+1), sb.length()-1,Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
        contact.setText(sb);//your edit text here
    }
}

设置文本样式

代码语言:javascript
复制
public TextView createContactTextView(String text)
    {
      TextView tv = new TextView(this);
      tv.setText(text);
      tv.setTextSize(25);
      tv.setBackgroundResource(R.drawable.design);
      return tv;
    }

输出:如果用户尝试删除文本,则会删除整个文本

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25916633

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档