Sono abbastanza sicuro che questa domanda abbia già avuto risposta da qualche parte. Sembra solo troppo comune. Ma non riesco a trovare la risposta. Non riesco nemmeno a capire la soluzione.Colori dipendenti dai temi dei widget selezionati
Ecco il problema:
voglio un mio TableRow di avere il colore di sfondo diverso. È semplice, devo solo aggiungere
android:background="#123456"
Nella dichiarazione XML di TableRow. Ma voglio anche che la mia applicazione abbia due temi. Nell'altro tema, il TableRow dovrebbe avere un diverso colore di sfondo. Non riesco a trovare un modo per definire un valore di colore all'interno di un tema e usarlo. Vorrei scrivere qualcosa di simile:
<style name="Theme.MyApp" parent="@style/Theme.Light">
<color "my_cool_color">#123456</color>
</style>
<style name="Theme.MyApp.Dark" parent="@style/Theme.Dark">
<color "my_cool_color">#654321</color>
</style>
E, nella dichiarazione di TableRow:
android:background="@color/my_cool_color"
Così, quando cambio il tema, il colore dello sfondo che la propria TableRow cambia. Ho provato in molti modi per molte ore e non ho avuto successo ... Una cosa che non ho provato, è stata la creazione del mio widget basandomi su TableRow e dichiarando uno stile separato per esso - Penso che questo dovrebbe funzionare, ma è soluzione troppo pesante per un problema così semplice.
Grazie! Ho trovato qualcosa su attr.xml, ma non ho trovato un esempio adatto. Al contrario, la tua risposta non potrebbe essere più completa! – user1234567
Ho trovato la tua risposta molto utile e ho risolto anche il mio problema. +1. Ma ho ancora un problema, voglio usare i colori definiti nel codice. Come posso farlo, come usare i colori di attrs nel codice (non in xml)? – Sandra
Sì, ma se uso il tema scuro voglio che il colore sia blu e per l'altro verde. Ma come posso ottenere il colore giusto nel codice? – Sandra