Alignment in Html.fromHtml()

前端 未结 7 841
眼角桃花
眼角桃花 2020-12-06 05:52

Is alignment working in HTML.fromHtml() in a TextView?

I tried

Test

and

7条回答
  •  误落风尘
    2020-12-06 06:18

    You cannot set alignment in HTML text but you can use a SpannableStringBuilder instead. It's verbose but it gets the job done.

    E.g.

    private Spanned getFormattedLabelText(String text, String subText) {
        String fullText = String.format("%s\n%s", text, subText);
    
        int fullTextLength = fullText.length();
        int titleEnd = text.length();
    
        SpannableStringBuilder s = new SpannableStringBuilder(fullText);
    
        // Center align the text
        AlignmentSpan alignmentSpan = new AlignmentSpan.Standard(Layout.Alignment.ALIGN_CENTER);
        s.setSpan(alignmentSpan, 0, fullTextLength, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
    
        // Make the title bold
        s.setSpan(new StyleSpan(Typeface.BOLD), 0, titleEnd, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); //bold
    
        // Make the subtext small
        int smallTextSize = DisplayUtil.getPixels(TypedValue.COMPLEX_UNIT_SP, 10);
        s.setSpan(new AbsoluteSizeSpan(smallTextSize), titleEnd + 1, fullTextLength, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); //bold
    
        return s;
    }
    

    Then set the TextView text as usual:

    myTextView.setText(getFormattedLabelText("Title", "Subtitle"));
    

提交回复
热议问题