Moin,
ich meld mich mal mit einer Android Frage, vielleicht gibt es hier ja ein paar Android-Entwickler.
Folgendes Szenario: Ich will die Farbe einer View über ein Theme ändern, wobei ich allerdings insbesondere die Farbe bei einem bestimmten Zustand abhängig vom Theme anpassen möchte! Dazu habe ich einen Farbselector erstellt mit 2 states auf den ich im textColor Attribut meiner View referenziere. Für die Farbe habe ich ein Custom Attribut (format=reference|color) erzeugt dem ich in meinen beiden Themes eine konkrete Farbe zuweise. Auf dieses Custom Attribut möchte ich dann in einem bestimmten state meines Selectors zugreifen.
Das ganze soll dann so aussehen, wobei mein View genau diesen Selector als textColor verwenden soll:
|
Quellcode
|
1
2
3
4
5
|
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_enabled="true" android:color="#ffffff" />
<item android:state_enabled="false" android:color="?attr/ThemeTest"/>
</selector>
|
Anstatt die korrekte Theme basierte Farbe anzuzeigen wird mir aber immer rot angezeigt. Ich tippe mal, das soll ein Fehlerwert sein. In logcat gab es keine Ausgabe diesbezüglich. Außerdem wird die korrekte Farbe verwendet, wenn ich im textColor Attribut meiner View direkt auf "?attr/ThemeTest" referenziere. D.h. das Custom Attribut funktioniert generell eigentlich schon, nur speziell in einem bestimmten state macht es Probleme!
Ich bin jetzt etwas überfragt. Generell habe ich eigentlich relativ viel herumprobiert und versch. Sachen ausprobiert unter anderem über definieren von Custom Style und ähnliches und immer gab es das Fehler-Rot! Die Frage habe ich übrigens auch auf stackoverflow gepostet, allerdings ohne eine Antwort (bisher). Trotzdem der Link, tendentiell ist es dort etwas präziser und ausführlicher beschrieben:
https://stackoverflow.com/questions/3086…ifferent-states
Wäre top, wenn jemand eine Lösung für das Problem hat. Hat mich bisher etwas gefrustet und finde es sehr ärgerlich, dass ich es nicht hinbekomme, an für sich ist es ja aus Android Sicht etwas sehr triviales. Meine Vermutung ist ja, dass irgendein Context nicht passt in meinem Selector und deswegen das referenzieren nicht funktioniert, aber ich wüsste nichtmal genau wie ich das prüfen sollte..
Gruß,
idk