Установить стиль TextView (жирный или курсив)
Как установить TextView
стиль (полужирный или курсив) в Java и без использования XML-макета?
Другими словами мне нужно написать android:textStyle
с Java.
28 ответов
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)
Попробуйте это установить TextView
жирным шрифтом или курсивом
textView.setTypeface(textView.getTypeface(), Typeface.BOLD);
textView.setTypeface(textView.getTypeface(), Typeface.ITALIC);
textView.setTypeface(textView.getTypeface(), Typeface.BOLD_ITALIC);
Программный:
Вы можете сделать программно, используя setTypeface()
:
textView.setTypeface(null, Typeface.NORMAL); // for Normal Text
textView.setTypeface(null, Typeface.BOLD); // for Bold only
textView.setTypeface(null, Typeface.ITALIC); // for Italic
textView.setTypeface(null, Typeface.BOLD_ITALIC); // for Bold and Italic
XML:
Вы можете установить непосредственно в файле XML в <TextView />
лайк:
android:textStyle="normal"
android:textStyle="normal|bold"
android:textStyle="normal|italic"
android:textStyle="bold"
android:textStyle="bold|italic"
У вас есть два варианта:
Вариант 1 (работает только жирным шрифтом, курсивом и подчеркиванием):
String s = "<b>Bolded text</b>, <i>italic text</i>, even <u>underlined</u>!"
TextView tv = (TextView)findViewById(R.id.THE_TEXTVIEW_ID);
tv.setText(Html.fromHtml(s));
Вариант 2:
Используйте Spannable; это более сложно, но вы можете динамически изменять атрибуты текста (не только полужирный / курсив, но и цвета).
Программный:
Вы можете сделать программно, используя setTypeface()
метод:
Ниже приведен код для шрифта по умолчанию
textView.setTypeface(null, Typeface.NORMAL); // for Normal Text
textView.setTypeface(null, Typeface.BOLD); // for Bold only
textView.setTypeface(null, Typeface.ITALIC); // for Italic
textView.setTypeface(null, Typeface.BOLD_ITALIC); // for Bold and Italic
и если вы хотите установить пользовательский шрифт:
textView.setTypeface(textView.getTypeface(), Typeface.NORMAL); // for Normal Text
textView.setTypeface(textView.getTypeface(), Typeface.BOLD); // for Bold only
textView.setTypeface(textView.getTypeface(), Typeface.ITALIC); // for Italic
textView.setTypeface(textView.getTypeface(), Typeface.BOLD_ITALIC); // for Bold and Italic
XML:
Вы можете установить непосредственно в файле XML в <TextView />
как это:
android:textStyle="normal"
android:textStyle="normal|bold"
android:textStyle="normal|italic"
android:textStyle="bold"
android:textStyle="bold|italic"
Или вы можете установить свой любимый шрифт (из активов). для получения дополнительной информации см ссылку
TextView text = (TextView)findViewById(R.id.THE_TEXTVIEW_ID);
Теперь установите textview
свойства..
text.setTypeface(null, Typeface.BOLD); //-- for only bold the text
text.setTypeface(null, Typeface.BOLD_ITALIC); //-- for bold & italic the text
text.setTypeface(null, Typeface.ITALIC); // -- for italic the text
Вы можете установить другой шрифт, используя пример, приведенный ниже -
textView.setTypeface(textView.getTypeface(), Typeface.BOLD);
textView.setTypeface(textView.getTypeface(), Typeface.ITALIC);
textView.setTypeface(textView.getTypeface(), Typeface.BOLD_ITALIC);
Или, если вы хотите установить другой шрифт и его гарнитуру. Добавьте его в актив или необработанную папку, а затем используйте как
Typeface face= Typeface.createFromAsset(getAssets(), "font/font.ttf");
tv1.setTypeface(face);
Typeface face1= Typeface.createFromAsset(getAssets(), "font/font1.ttf");
tv2.setTypeface(face1);
Просто если вы хотите сделать текст жирным. напишите эту строку в макете в свойстве просмотра текста
android:textStyle="bold"
Это было бы
yourTextView.setTypeface(null,Typeface.DEFAULT_BOLD);
и курсив должен быть в состоянии с заменой Typeface.DEFAULT_BOLD
с Typeface.DEFAULT_ITALC
,
Дайте мне знать, как это работает.
Попробуй это:
textView.setTypeface(textView.getTypeface(), Typeface.BOLD);
textView.setTypeface(textView.getTypeface(), Typeface.ITALIC);
textView.setTypeface(textView.getTypeface(), Typeface.BOLD_ITALIC);
TextView text = (TextView)findViewById(R.layout.textName);
text.setTypeface(null,Typeface.BOLD);
Попробуйте это установить TextView
стиль по коду Java
txt1.setTypeface(null,Typeface.BOLD_ITALIC);
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)
Использование textView.setTypeface(Typeface tf, int style);
установить свойство стиля TextView
, Смотрите документацию для разработчиков для получения дополнительной информации.
Попробуй это:
TextView textview = (TextView)findViewById(R.id.textview_idname);
textview.setTypeface(null,Typeface.BOLD);
И, как объяснено здесь, строковые ресурсы для разработчиков Android, если вам нужно использовать параметры в вашем текстовом ресурсе с стилизацией, вы должны избежать открывающих скобок
<resources>
<string name="welcome_messages">Hello, %1$s! You have <b>%2$d new messages</b>.</string>
</resources>
и вызвать formatHtml(строка)
Resources res = getResources();
String text = String.format(res.getString(R.string.welcome_messages), username, mailCount);
CharSequence styledText = Html.fromHtml(text);
Стандартный способ сделать это - использовать пользовательские стили. бывший
В 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" />
Самый простой способ сделать это на основе критериев выбора стиля:
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));
Один из способов сделать это:
myTextView.setTypeface(null, Typeface.ITALIC);
myTextView.setTypeface(null, Typeface.BOLD_ITALIC);
myTextView.setTypeface(null, Typeface.BOLD);
myTextView.setTypeface(null, Typeface.NORMAL);
Другой вариант, если вы хотите сохранить предыдущую гарнитуру и не хотите потерять ранее примененную, тогда:
myTextView.setTypeface(textView.getTypeface(), Typeface.NORMAL);
myTextView.setTypeface(textView.getTypeface(), Typeface.BOLD);
myTextView.setTypeface(textView.getTypeface(), Typeface.ITALIC);
myTextView.setTypeface(textView.getTypeface(), Typeface.BOLD_ITALIC);
Вы можете попробовать вот так:
<string name="title"><u><b><i>Your Text</i></b></u></string>
При использовании упрощенных тегов с AndroidX рассмотрите возможность использования HtmlCompat.fromHtml()
String s = "<b>Bolded text</b>, <i>italic text</i>, even <u>underlined</u>!"
TextView tv = (TextView)findViewById(R.id.THE_TEXTVIEW_ID);
tv.setText(HtmlCompat.fromHtml(s, FROM_HTML_MODE_LEGACY));
В моем случае:
1 - установить текст
2 - установить гарнитуру
holder.title.setText(item.nome);
holder.title.setTypeface(null, Typeface.BOLD);
Поскольку я хочу использовать собственный шрифт, у меня работает только сочетание нескольких ответов. Очевидно настройки в моем 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...
//leveraging the extension functions
fun TextView.makeBold(){
this.setTypeface(this.typeface,Typeface.BOLD)
}
yourTextView.makeBold()
Это единственное, что работало для меня на OnePlus 5T, настроенном со шрифтом OnePlus Slate™:
textView.setTypeface(Typeface.create(textView.getTypeface(), useBold ? Typeface.BOLD : Typeface.NORMAL));
Другие методы заставили бы его вернуться к Roboto, когда он либо BOLD, либо NORMAL.
Лучший способ это определить в styles.xml
<style name="common_txt_style_heading" parent="android:style/Widget.TextView">
<item name="android:textSize">@dimen/common_txtsize_heading</item>
<item name="android:textColor">@color/color_black</item>
<item name="android:textStyle">bold|italic</item>
</style>
И обновить его в TextView
<TextView
android:id="@+id/txt_userprofile"
style="@style/common_txt_style_heading"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_marginTop="@dimen/margin_small"
android:text="@string/some_heading" />
1) Вы можете установить его с помощью TypeFace. 2) Вы можете напрямую использовать в strings.xml(в папке значений) 3) Вы можете String myNewString = "Это мой жирный текст. Это моя строка курсивом. Это моя подчеркнутая строка.
AppCompatTextView text =(AppCompatTextView)findViewById(R.layout.appCompatTextView1);
text.setTypeface(null,Typeface.BOLD);
Используйте метод выше, чтобы установить гарнитуру программно.