自定义了一个TextView,用SpannableStringBuilder给她设了带格式的字符串  
SpannableStringBuilder style=new SpannableStringBuilder(text);   
       style.setSpan(new ForegroundColorSpan(Color.RED),2,3,Spannable.SPAN_EXCLUSIVE_INCLUSIVE);    
       style.setSpan(new ForegroundColorSpan(Color.RED),5,9,Spannable.SPAN_EXCLUSIVE_INCLUSIVE);    
       this.setText(style);
然后重写这个TextView的onDraw,想在刷屏时显示其内容(使用类似 Canvas::drawText 的形式)但是this.getText取出的文字类型不能直接用于drawText,请问这时候要用什么方法显示TextView内的文字

解决方案 »

  1.   

    ...换个问题Canvas的drawText能画SpannableStringBuilder(or SpannableString)并体现其格式吗?
      

  2.   

    spannableStringBuilder是不是有一个getspan,然后getdrawable?
    如果是, 可以用得来的drawable.draw(canvas)
      

  3.   

    getspan 取得的是什么东西?然后也没有getdrawable的说
      

  4.   

     先用toString 看看是不是你想要的  不行就用debug调试 看看数据是什么样子的   
      

  5.   

    有文字,但没体现出格式贴代码: @Override
    public void onDraw(Canvas c) //TextView::onDraw(Canvas c)
    {
    Paint p = new Paint();

    SpannableStringBuilder ss = new SpannableStringBuilder("abcdefg");
    ss.setSpan(new ForegroundColorSpan(Color.RED),2,5,Spannable.SPAN_EXCLUSIVE_INCLUSIVE);
    this.setText(ss); 
    c.drawText(this.getText().toString(), 10, 10, p); }
    是少设了什么?还是drawText本身就打印不出格式?
      

  6.   

    从外部调用TextView::draw(canvas)就有效果,谁知道这个draw实现了些什么?