首页 > 解决方案 > BulletSpan 不添加项目符号

问题描述

我一直在尝试使用 BulletSpan 创建一个带有项目符号点的字符串列表,但它不起作用。正在显示字符串列表,但左侧没有项目符号。我进行了相当多的研究,似乎项目符号只出现在新行之后,所以我在每个字符串之前添加了“\r\n”,但这也不起作用。

对于上下文,对象 mModule 包含称为项目符号的字符串 RealmList,我正在尝试将项目符号指向的字符串组设置为“thingsToTv”。

  StringBuilder sb = new StringBuilder();

        for(int i = 0; i < mModule.getBullets().size(); i++){
            String stringB = "\r\n" + mModule.getBullets().get(i);
            SpannableString string = new SpannableString(stringB);
            string.setSpan(new BulletSpan(), 0, stringB.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
            Log.d(TAG, "String: " + string);
            sb.append(stringB);
        }

        thingsToTv.setText(sb);

非常感谢任何帮助,谢谢:)

标签: android

解决方案


我不熟悉,RealmList但如果它像一个ArrayList那么你可以试试这个:

SpannableString spanString;

private void testSpanBullet(){
    String sep = System.lineSeparator();

    ArrayList<String> list = new ArrayList<>();
    list.add("Test 1");
    list.add("Test 2");
    list.add("Test 3");
    list.add("Test 4");

    StringBuilder sb = new StringBuilder();

    for(String s : list){
        sb.append(sep + s);
    }

    String concat = sb.toString();
    spanString = new SpannableString(concat);

    for(String s : list){
        addBullet(s, concat);
    }

    textView.setText(spanString);
}

private void addBullet(String s, String txt){
    int index = txt.indexOf(s);
    // You can change the attributes as you need ... I just added a bit of color and formating
    BulletSpan bullet = new BulletSpan(20, Color.RED);
    spanString.setSpan(bullet, index, index+1, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
}



注意:
这仅在您的值RealmList是唯一的情况下才有效。

此外,如果RealmList不允许,foreach那么您将需要for像在代码中那样执行循环for(int i = 0; i < mModule.getBullets().size(); i++)


推荐阅读