How to set the font style to bold, italic and underlined in an Android TextView? How to set the font style to bold, italic and underlined in an Android TextView? android android

How to set the font style to bold, italic and underlined in an Android TextView?


This should make your TextView bold, underlined and italic at the same time.

strings.xml

<resources>    <string name="register"><u><b><i>Copyright</i></b></u></string></resources>

To set this String to your TextView, do this in your main.xml

<?xml version="1.0" encoding="utf-8"?><TextView xmlns:android="http://schemas.android.com/apk/res/android"    android:id="@+id/textview"    android:layout_width="fill_parent"    android:layout_height="fill_parent"    android:text="@string/register" />

or In JAVA,

TextView textView = new TextView(this);textView.setText(R.string.register);

Sometimes the above approach will not be helpful when you might have to use Dynamic Text. So in that case SpannableString comes into action.

String tempString="Copyright";TextView text=(TextView)findViewById(R.id.text);SpannableString spanString = new SpannableString(tempString);spanString.setSpan(new UnderlineSpan(), 0, spanString.length(), 0);spanString.setSpan(new StyleSpan(Typeface.BOLD), 0, spanString.length(), 0);spanString.setSpan(new StyleSpan(Typeface.ITALIC), 0, spanString.length(), 0);text.setText(spanString);

OUTPUT

enter image description here


I don't know about underline, but for bold and italic there is "bolditalic". There is no mention of underline here: http://developer.android.com/reference/android/widget/TextView.html#attr_android:textStyle

Mind you that to use the mentioned bolditalic you need to, and I quote from that page

Must be one or more (separated by '|') of the following constant values.

so you'd use bold|italic

You could check this question for underline: Can I underline text in an android layout?


Or just like this in Kotlin:

val tv = findViewById(R.id.textViewOne) as TextViewtv.setTypeface(null, Typeface.BOLD_ITALIC)// ORtv.setTypeface(null, Typeface.BOLD or Typeface.ITALIC)// ORtv.setTypeface(null, Typeface.BOLD)// ORtv.setTypeface(null, Typeface.ITALIC)// ANDtv.paintFlags = tv.paintFlags or Paint.UNDERLINE_TEXT_FLAG

Or in Java:

TextView tv = (TextView)findViewById(R.id.textViewOne);tv.setTypeface(null, Typeface.BOLD_ITALIC);// ORtv.setTypeface(null, Typeface.BOLD|Typeface.ITALIC);// ORtv.setTypeface(null, Typeface.BOLD);// ORtv.setTypeface(null, Typeface.ITALIC);// ANDtv.setPaintFlags(tv.getPaintFlags()|Paint.UNDERLINE_TEXT_FLAG);

Keep it simple and in one line :)