Mám dva štýly definované v styles.xml
a styles.xml(v21)
. Obe zahŕňajú a textAppearance
atribút, ktorý odkazuje na určitý predvolený štýl textu pre Android.
styles.xml
<style name="NotificationTitle">
<item name="android:textAppearance">
@android:style/TextAppearance.StatusBar.EventContent.Title
</item>
</style>
styles.xml (v21)
<style name="NotificationTitle">
<item name="android:textAppearance">
@android:style/TextAppearance.Material.Notification.Title
</item>
</style>
Tieto predvolené štýly obsahujú niektoré textové atribúty: textColor
, textSize
, atď:
...
<style name="TextAppearance.Material.Notification.Title">
<item name="textColor">@color/primary_text_default_material_light</item>
<item name="textSize">@dimen/notification_title_text_size</item>
</style>
...
Potrebujem to zohnať textColor
programovo názvom môjho vlastného štýlu (v príklade NotificationTitle). Snažil som sa to získať pomocou obtainStyledAttributes
, ale nevracia sa. Čo mám robiť?
int resultColor;
int[] attrs = {android.R.attr.textColor};
TypedArray ta = context.obtainStyledAttributes(R.style.NotificationText, attrs);
if (ta != null) {
resultColor = ta.getColor(0, Color.TRANSPARENT);
ta.recycle();
}
odpovede:
1 pre odpoveď č. 1Prepáčte, ak s odpoveďou prichádzam trochu neskoro, ale skúsil som váš kód s trochou úpravy, zmenil som štýl na tento:
<style name="NotificationTitle" parent="TextAppearance.AppCompat.Notification.Title"/>
<style name="NotificationText" parent="TextAppearance.AppCompat.Notification.Line2"/>
a všetko dobre fungovalo so zvyškom vášho kódu (a teraz, keď som používal AppCompat, nepotreboval som v21 pre štýly)
Dúfam, že to pomôže.