/ / Android: Získajte atribút textColor z určitého štýlu definovaného v styles.xml - android, android-layout

Android: Získajte atribút textColor z určitého štýlu definovaného v štýloch.xml - android, android-layout

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ď č. 1

Prepáč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.