How to create a empty bullet paragraph by BulletSpan?

前端 未结 1 534
鱼传尺愫
鱼传尺愫 2021-01-20 18:58

I wanted to create a empty bullet paragraph, but it didn\'t work. This is my code:

EditText contentET = (EditText) findViewById(R.id.content);
contentET.setT         


        
1条回答
  •  轻奢々
    轻奢々 (楼主)
    2021-01-20 19:28

    I ran your code and see what you mean. The strange white space after "123" appears to be a graphical glitch, because it's not actually treated as a space character; i.e. hit backspace and you'll see that the number "3" gets removed.

    That being said, fortunately there's an easy fix for your problem: you'll need to change the indices on which you're applying the spans. Swap out the lines in your own code for the ones below and you'll see both the strange white space is gone and a third, empty bullet appears. This will also introduce some spacing between the bullet and the actual text following it.

    s.setSpan(new BulletSpan(), 0, 0, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
    s.setSpan(new BulletSpan(), 4, 4, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
    s.setSpan(new BulletSpan(), 8, 8, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
    

    Personally I would tend make this a bit more flexible and break up the complete string into separate parts and iterate over those. Using a SpannableStringBuilder you can then append text and set spans with every concatenation. Under water this is already happening, as at runtime contentET.getText() will actually return a SpannableStringBuilder. :)

    Also notice I used Spannable.SPAN_EXCLUSIVE_EXCLUSIVE, as otherwise you'll suddenly see extra bullets appearing when you start removing text by backspacing it.

    The result will look like this:

    Creating an empty BulletSpan

    0 讨论(0)
提交回复
热议问题