Установить стиль TextView (жирный или курсив) - PullRequest
775 голосов
/ 01 июня 2011

Как установить стиль TextView (полужирный или курсив) в Java и без использования XML-макета?

Другими словами, мне нужно написать android:textStyle с помощью Java.

Ответы [ 24 ]

5 голосов
/ 15 октября 2014

Попробуйте это:

TextView textview = (TextView)findViewById(R.id.textview_idname);
textview.setTypeface(null,Typeface.BOLD);
5 голосов
/ 01 июня 2011

Используйте textView.setTypeface(Typeface tf, int style); для установки свойства стиля TextView. См. документацию для разработчиков для получения дополнительной информации.

3 голосов
/ 27 февраля 2017

Один из способов сделать это:

myTextView.setTypeface(null, Typeface.ITALIC);
myTextView.setTypeface(null, Typeface.BOLD_ITALIC);
myTextView.setTypeface(null, Typeface.BOLD);
myTextView.setTypeface(null, Typeface.NORMAL);

Другой вариант, если вы хотите сохранить предыдущую гарнитуру и не хотите потерять ранее примененную:

3 голосов
/ 15 апреля 2014

Стандартный способ сделать это - использовать пользовательские стили.Например -

В styles.xml добавьте следующее.

<resources xmlns:android="http://schemas.android.com/apk/res/android">
<style name="MyApp.TextAppearance.LoginText">
    <item name="android:textStyle">bold|italic</item>
</style>

Примените этот стиль к TextView следующим образом.

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    style="@style/MyApp.TextAppearance.LoginText" />
2 голосов
/ 15 марта 2019

Самый простой способ сделать это на основе критериев выбора стиля:

String pre = "", post = "";

if(isBold){
    pre += "<b>"; post += "</b>";
}
if(isItalic){
    pre += "<i>"; post += "</i>";
}
if(isUnderline){
    pre += "<u>"; post += "</u>";
}

textView.setText(Html.fromHtml(pre + editText.getText().toString()+ post));
// you can also use it with EidtText
editText.setText(Html.fromHtml(pre + editText.getText().toString()+ post));
2 голосов
/ 31 июля 2017

Вы можете попробовать вот так:

<string name="title"><u><b><i>Your Text</i></b></u></string>
1 голос
/ 16 февраля 2019

Попробуйте это:

textView.setTypeface(textView.getTypeface(), Typeface.BOLD);
textView.setTypeface(textView.getTypeface(), Typeface.ITALIC);
textView.setTypeface(textView.getTypeface(), Typeface.BOLD_ITALIC);
1 голос
/ 09 февраля 2019
textView.setTypeface(null, Typeface.BOLD_ITALIC);
textView.setTypeface(null, Typeface.BOLD);
textView.setTypeface(null, Typeface.ITALIC);
textView.setTypeface(null, Typeface.NORMAL);

Для сохранения предыдущего шрифта

textView.setTypeface(textView.getTypeface(), Typeface.BOLD_ITALIC)
1 голос
/ 28 сентября 2017

В моем случае:

1 - установить текст

2 - установить гарнитуру

holder.title.setText(item.nome);
holder.title.setTypeface(null, Typeface.BOLD);
1 голос
/ 25 августа 2014

Поскольку я хочу использовать собственный шрифт, у меня работает только сочетание нескольких ответов. Очевидно настройки в моем layout.xml как android:textStlyle="italic" были проигнорированы AOS. Итак, наконец я должен был сделать следующее: в strings.xml целевая строка была объявлена ​​как:

<string name="txt_sign"><i>The information blah blah ...</i></string>

затем дополнительно в коде:

TextView textSign = (TextView) findViewById(R.id.txt_sign);
FontHelper.setSomeCustomFont(textSign);
textSign.setTypeface(textSign.getTypeface(), Typeface.ITALIC);

Я не пробовал вариант Spannable (который, я полагаю, ДОЛЖЕН работать), но

textSign.setText(Html.fromHtml(getString(R.string.txt_sign))) 

не имел никакого эффекта. Также, если я удаляю italic tag из strings.xml, оставляя setTypeface() в одиночку, это тоже не имеет никакого эффекта. Хитрый Android ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...