Falscher Hintergrund in einem DialogTheme

  • Antworten:2
p a
  • Forum-Beiträge: 131

05.03.2012, 11:09:23 via Website

Hallo,
also, ich hab grad folgendes Problem ...

In meiner App gibt es eine Activity X, in dieser Activity wird ein Bild geladen und es kann ein Dialog angezeigt werden, dem ich ein eigenes Theme zugewiesen habe.
Ausserdem gibt es eine Activity Y, in dieser Activity kann ebenfalls ein Dialog angezeigt werden, dieser Dialog hat das gleiche Theme wie der in Activity X.
In besagtem Theme wird der windowBackground auf eine selbstdefinierte Farbe @color/transparent mit #00000000 gesetzt.
Wenn ich nun die App starte und zuerst in Activity Y gehe und dort den Dialog öffne ist alles gut, der Dialog hat einen transparenten Hintergrund, wenn ich dann in Activity X gehe ist auch alles gut, der Dialog hat einen transparenten Hintergrund.
Ich schliesse die App und starte sie erneut.
Wenn ich jetzt zuerst in Activity X gehe bekommt der Dialog das Bild das in der Activity geladen wurde als Hintergrund, wenn ich dann in Activity Y gehe ist dort ebenfalls das Bild als Hintergrund für den Dialog.

Irgendwie wird das damit zusammenhängen das windowBackground EIGENTLICH keine Farben als Wert akzeptiert und dass er dann folglich die Resourcen intern irgendwie nicht so managed wie ich es gerne hätte.

Ist das Problem soweit verständlich, kann mir jemand mal den ein oder anderen Tip geben wie ich das lösen/umgehen kann?

Antworten
Harry
  • Forum-Beiträge: 52

05.03.2012, 12:24:21 via Website

Hallo,
ich weiß nicht genau, ob du hiermit was anfangen kannst. Aber ich habe auch Dialoge, diese sind aber eigentlich eine neue Activity.
Für diese Activity habe ich mir in syles.xml einen neuen Style definiert:

1<style name="Theme.Transparent" parent="android:Theme">
2 <item name="android:windowIsTranslucent">true</item>
3 <item name="android:windowBackground">@color/transparent</item>
4 <item name="android:windowContentOverlay">@null</item>
5 <item name="android:windowNoTitle">true</item>
6 <item name="android:windowFullscreen">true</item>
7 <item name="android:backgroundDimEnabled">false</item>
8 </style>

Hierdurch ist die Activity transparent. Da aber dieser Style von android:Theme erbt, kann ich mir vorstellen, dass er auch bei Dialogen eingesetzt werden kann. Die entscheidenen Zeilen sind windowIsTranslucent="true", windowBackground="@color/transparent" (#00000000) und irgend ein Trick war da noch mit windowContentOverlay="@null". Weiß nicht mehr genau.

Probiers einfachmal aus.

Gruß Harry

Antworten
p a
  • Forum-Beiträge: 131

05.03.2012, 12:34:41 via Website

Danke, für den Tipp

hab es aber mittlerweile selber lösen können, ich hab einfach anstatt einer Farbe eine transparente 1px Grafik als Hintergrund genommen und damit funktioniert es alles richtig.
Das Problem kann ich mir jetzt nur so erklären dass er dynamisch, zur Laufzeit die Ids für die Ressourcen vergibt und wenn ich zuerst Activity X starte bekommt das Bild die Id die sonst für @color/transparent verwendet werden würde, anscheinend hat die 1px Grafik da dann irgendwie Vorrang vor der Farbe. So ganz verstehe ich es nicht, oder kann es zumindest nicht richtig in Worte fassen, aber was ich mir dazu denke ergibt in meinem Kopf durchaus einen gewissen Sinn.

Falls jemand es versteht oder erklären kann, nur zu, wüsste echt gerne was da genau passiert.

— geändert am 05.03.2012, 12:36:19

Antworten