【问题标题】:Using span to insert tab in textview使用 span 在 textview 中插入选项卡
【发布时间】:2013-10-07 21:42:25
【问题描述】:

有没有办法在textview 中使用span 为一段文本添加制表符?从开发人员文档中,我遇到了TabStopSpan (see here) 并尝试在TextView 中使用它,如下所示:

String source = "Hello World! Let's select some text!!";

        SpannableString s = new SpannableString(source);
        s.setSpan(new TabStopSpan() {
            @Override
            public int getTabStop() {
                return 100;
            }
        }, 5, 10, 0);
ed.setText(s, BufferType.SPANNABLE);  

其中 ed 是 TextView。上面的 sn-p 没有做任何事情,文档也少得几乎没有用处。有什么方法可以使用 span 将制表符添加到 TextView

【问题讨论】:

    标签: android textview tabstop


    【解决方案1】:

    只需为制表符添加“\t”,为新行添加“\n”。 例如:

    String source = "Hello!\tLets select some text!";
    

    【讨论】:

      【解决方案2】:

      是的。 "\t" 和 TabStopSpannable 的组合可以解决问题。 下面的 sn-p 在 firstString 和 secondString 之间添加了一个制表符:

          SpannableStringBuilder span = new SpannableStringBuilder(firstString +"\t"+ secondString);
          span.setSpan(new TabStopSpan.Standard(600), 0, span.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE );
          }
      
          ((TextView) v).setText(span, TextView.BufferType.SPANNABLE);
      

      注意在 TabStopSpan.Standard 构造函数中使用有意义的值,最好基于屏幕尺寸。

      【讨论】:

        【解决方案3】:

        使用这个。

        public static SpannableStringBuilder getTabText(String text, float stop)
        {
            int column = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, stop, SystemMaster.getResources().getDisplayMetrics());
        
            SpannableStringBuilder span = new SpannableStringBuilder(text);
            span.setSpan(new TabStopSpan.Standard(column), 0, span.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
            return span;
        }
        

        然后

        Text text = "xx \t yy \n aa \t bb";
        SpannableStringBuilder sp = TextHelper.getTabText(text, 100);
        tv.setText(sp);
        

        【讨论】:

          猜你喜欢
          • 2021-12-06
          • 1970-01-01
          • 2016-06-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2023-02-09
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多