2016-02-10 33 views
9

Ho una libreria che ha le proprie attività con gli attributi colorPrimary e colorPrimaryDark. Nell'applicazione che sta utilizzando questa libreria, ci sono diversi valori per questi attributi di colore.Come sovrascrivere gli stili di una libreria che ha la propria attività

C'è un modo per far sì che la libreria usi lo stile fornito dall'applicazione chiamante?

In modo che alla fine, se l'app ha una barra degli strumenti verde, le attività nella libreria avranno una barra verde, non quella definita nel tema della libreria.

Questo è il tema della biblioteca:

<style name="LibraryTheme" parent="Theme.AppCompat.Light.DarkActionBar"> 
    <item name="colorPrimary">@color/red</item> 
    <item name="colorPrimaryDark">@color/dark_red</item> 
</style> 

e questo è il tema principale dell'applicazione di esempio:

<style name="SampleAppTheme" parent="Theme.AppCompat.Light.DarkActionBar"> 
    <item name="colorPrimary">@color/green</item> 
    <item name="colorPrimaryDark">@color/dark_green</item> 
    <item name="colorAccent">@color/accent_color</item> 
</style> 

risposta

1

Se "colorPrimary" utilizzerà lo stesso valore - @color/primaryColor, allora il valore della biblioteca primaryColor sarà sovrascritto da primaryColor nell'app di esempio.

Se si utilizzano valori diversi per "colorPrimary" in biblioteca e app, per esempio - e @color/libPrimaryColor@color/appPrimaryColor poi i colori saranno diverse