我想在TextView中显示一个有序列表,例如:
1)项目1
2)项目2

使用以下布局:

<TextView
    android:text="<ol><li>item 1\n</li><li>item 2\n</li></ol>
    />

我得到:
  • 项目1
  • 项目2

  • 如何将项目符号更改为数字?

    谢谢。

    最佳答案

    我认为您必须在代码中执行此操作。我必须将LeadingMarginSpan子类化才能使其正常工作。这是我的方法。

    private class NumberIndentSpan implements LeadingMarginSpan {
    
        private final int gapWidth;
        private final int leadWidth;
        private final int index;
    
        public NumberIndentSpan(int leadGap, int gapWidth, int index) {
            this.leadWidth = leadGap;
            this.gapWidth = gapWidth;
            this.index = index;
        }
    
        public int getLeadingMargin(boolean first) {
            return leadWidth + gapWidth;
        }
    
        public void drawLeadingMargin(Canvas c, Paint p, int x, int dir, int top, int baseline, int bottom, CharSequence text, int start, int end, boolean first, Layout l) {
            if (first) {
                Paint.Style orgStyle = p.getStyle();
                p.setStyle(Paint.Style.FILL);
                float width = p.measureText("4.");
                c.drawText(index + ".", (leadWidth + x - width / 2) * dir, bottom - p.descent(), p);
                p.setStyle(orgStyle);
            }
        }
    }
    

    掌握您的观点,并像这样使用它:
    SpannableStringBuilder ssb = new SpannableStringBuilder();
    for(String text : list) {
        int contentStart = content.length();
        content.append(text);
        content.setSpan(new NumberIndentSpan(15, 15, number), contentStart, content.length(), 0);
    }
    
    TextView view = findViewById(R.id.....);
    view.setText(ssb);
    

    希望这可以帮助其他人寻找这个:-)

    关于android - Android TextView中的有序列表,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2196499/

    10-09 04:50