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
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 :)