11

I have to set the style for a TextView which is created programmatically.

How do I implement style="@style/test" programmatically?

I have looked at the Android developer style documentation already, but it did not answer my question. Any ideas?

2

3 Answers 3

25

Dynamic style change is not currently supported. You must set the style before the view is create (in xml).

Sign up to request clarification or add additional context in comments.

2 Comments

what class i have to use for that?
You just put style="@style/test" in the definition for your TextView in the layout xml file.
5

You can pass the style to view's constructor. This can be done in 2 ways:

  1. Use ContextThemeWrapper and setup your style as a Theme for it:

    ContextThemeWrapper wrappedContext = new ContextThemeWrapper(yourContext, R.style.test);
    TextView testView = new TextView(wrappedContext, null, 0);
    

And important note here - to properly set the style with ContextThemeWrapper we have to use three-argument constructor and set defStyleAttr parameter to 0. Otherwise the default button style will be applied to the view.

  1. Starting from API 21 we can use constructor with 4 parameters:

    View (Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes)
    

Where defStyleRes is your style ID

With the same remark - defStyleAttr should be 0

Comments

3
setTypeface(Typeface.DEFAULT_BOLD, Typeface.BOLD_ITALIC);

It works for me

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.