Подтвердить что ты не робот

Выравнивание в Html.fromHtml()

Работает ли выравнивание в HTML.fromHtml() в TextView?

Я пробовал

<div align="center"><p>Test</p></div>

и некоторые вариации этого, включая включение вкладок выравнивания без круглых скобок в тег абзаца, но никто не работал. Текст всегда остается.

Спасибо за любую помощь!

С уважением.

4b9b3361

Ответ 1

Выравнивание не поддерживается в тексте HTML в TextView.

Ответ 2

Чтобы установить выравнивание в textview, сначала установите ширину текстового поля в match_parent, а затем используйте параметр text-align в вашем теге HTML. что-то вроде этого:

<div style="text-align: center">this text should be in center of view</div>

Обновление: Это решение работает только в android 7 и выше: |

Ответ 3

Хотя можно использовать выравнивание с помощью webview вместо TextView и загрузку html из файла, помещенного в активы:

public class ViewWeb extends Activity {
    WebView webview;
    @Override
    public void onCreate(Bundle savedInstanceState) {
       super.onCreate(savedInstanceState);
       setContentView(R.layout.webview);

       webview = (WebView) findViewById(R.id.webView1);
       webview.loadUrl("file:///android_asset/index.html");
    }
}

Ответ 4

Вы не можете установить выравнивание в тексте HTML, но вместо этого вы можете использовать SpannableStringBuilder. Это многословно, но оно выполняет свою работу.

Например

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;
}

Затем установите текст TextView как обычно:

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

Ответ 5

Для API 24 и ниже добавьте атрибут gravity к элементу макета TextView

      android:gravity="center_horizontal"

Для API 24 и выше можно использовать style в HTML.

  String centeredHtml = "<div style=\"text-align: center\">" + myFormattedHtml + "</div>";
  textView.setText(Html.fromHtml(centeredHtml));

Но gravity также поддерживается как минимум для API 26.

Ответ 6

Я считаю, что проще использовать свойство Gravity в TextView для центра текста...

Ответ 7

Если кто-то хочет выровнять текст по центру с красным цветом, можно использовать код ниже.

String centerNRed = "<div style='text-align:center' ><span style='color:red' >Hello World Its me.....</span></div>";
txt1.setText(Html.fromHtml(centerNRed));