Ответ 1
Выравнивание не поддерживается в тексте HTML в TextView.
Работает ли выравнивание в HTML.fromHtml() в TextView?
Я пробовал
<div align="center"><p>Test</p></div>
и некоторые вариации этого, включая включение вкладок выравнивания без круглых скобок в тег абзаца, но никто не работал. Текст всегда остается.
Спасибо за любую помощь!
С уважением.
Выравнивание не поддерживается в тексте HTML в TextView.
Чтобы установить выравнивание в textview, сначала установите ширину текстового поля в match_parent, а затем используйте параметр text-align в вашем теге HTML. что-то вроде этого:
<div style="text-align: center">this text should be in center of view</div>
Обновление: Это решение работает только в android 7 и выше: |
Хотя можно использовать выравнивание с помощью 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");
}
}
Вы не можете установить выравнивание в тексте 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"));
Для 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.
Я считаю, что проще использовать свойство Gravity в TextView для центра текста...
Если кто-то хочет выровнять текст по центру с красным цветом, можно использовать код ниже.
String centerNRed = "<div style='text-align:center' ><span style='color:red' >Hello World Its me.....</span></div>";
txt1.setText(Html.fromHtml(centerNRed));