I have a scenario in which I want to set a Drawable
depending upon the theme defined.
To explain this further, Here is what I have in code:
Here are the results of my investigation, regarding this topic.
If we have declare-stylable
then we can override those values in themes.
So far the best way that I found how to get them is the following.
TypedArray a = context.getTheme().obtainStyledAttributes(R.styleable.AppTheme);
a.getDrawable(R.styleable.AppTheme_homeIcon);
By using R.styleable.AppTheme_homeIcon
we are referencing exactly that attribute that we want. For example if we would have few more attributes, then we can reference them as follows:
a.getColor(R.styleable.AppTheme_color,defaultValue);
a.getDimension(R.styleable.AppTheme_width,defaultWidth);
And if in current theme those attributes were not defined you will get default values and no Exceptions.