Comment récupérer et utiliser un attribut de style à partir du code?
Oct 14 2020
J'ai défini un thème dans le style.xmlfichier.
<style name="ThemePurple" parent="AppTheme.NoActionBar">
<item name="colorPrimary">@color/colorPurple</item>
<item name="colorPrimaryDark">@color/colorPurpleDark</item>
<item name="colorAccent">@color/colorPurpleAccent</item>
</style>
Je veux utiliser le colorPrimaryde ce thème dans un textViewfichier recyclerView. J'ai essayé ceci:
int[] attrs = {android.R.attr.colorPrimary};
TypedArray typedArray = mContext.obtainStyledAttributes(R.style.ThemePurple, attrs);
holder.titleView.setTextColor(typedArray.getColor(0, Color.BLACK));
typedArray.recycle();
Mais ça ne fonctionne pas..
Réponses
3 snachmsm Oct 14 2020 at 11:44
non android.R.attr.colorPrimary, mais justeR.attr.colorPrimary
android préfixe signifie que vous souhaitez obtenir une valeur intégrée, par exemple android:colorPrimary
vous utilisez compat lib (AndroidX probablement) qui fournit des attributs plus récents aux anciennes versions du système, donc ces paramètres sont en fait "personnalisés", sans android:préfixe
2 Yeldar.N Oct 14 2020 at 11:57
Pour Kotlin :
val typedValue = TypedValue()
context.theme.resolveAttribute(android.R.attr.colorPrimary, typedValue, true)
holder.titleView.setTextColor(typedValue.data)
Pour Java:
TypedValue typedValue = new TypedValue();
context.getTheme().resolveAttribute(android.R.attr.colorPrimary, typedValue, true);
holder.titleView.setTextColor(typedValue.data);