Ich kämpfe ziemlich lange mit diesem Problem herum. Ich suchte nach Lösungen und es gab tatsächlich einige Vorschläge für verwandte Probleme, aber nichts funktionierte wirklich richtig für mich. Nehmen wir an, ich möchte einen AlertDialog mit einer (langen) Nachricht, einem Kontrollkästchen und zwei Schaltflächen erstellen.
%Vor%Dies funktioniert nicht , da das Kontrollkästchen nicht vollständig angezeigt wird, wenn die Dialognachricht zu lang wird. Außerdem wird es im Querformat komplett ausgeblendet.
Als nächstes versuchen Sie, das original dialog layout file (für mich befindet es sich unter android-sdk-linux_86 / plattformen / android-17 / data / res / layout / alert_dialog.xml) und versuche es kopiere den relevanten Teil, um einen eigenen "Klon" des inneren Dialoglayouts zu erstellen, einfach so:
dialog_checkbox.xml
%Vor%Wir könnten versuchen, diese Ansicht unserem Dialog wie folgt hinzuzufügen:
%Vor%Das funktioniert tatsächlich ganz gut. Fast. Wir werden kein Problem sehen, bis wir Theme.Light für unsere App verwenden. Aber sobald wir Theme.Light verwenden, werden die Farben des Dialogtextes schwarz und auf dunklem Hintergrund unlesbar. WARUM?!
Was ist los? Wie löst man das? Ich möchte die Textfarbe nicht programmgesteuert auf Weiß oder Schwarz festlegen, dies wird bei benutzerdefinierten Benutzerdesigns nicht gut aussehen. Irgendwelche Vorschläge?
Ich hatte das gleiche Problem und löste es, indem ich einen ContextThemeWrapper für mein gewünschtes Dialogthema erstellte und dieses beim Erstellen des AlertDialog Builders und beim Aufblasen der anzuhängenden Ansicht verwendete:
%Vor%Der Style R.style.DialogBaseTheme ist in "/values/styles.xml" für Gingerbread und unten als:
definiert %Vor%Dann ist es auch in "/values-v11/styles.xml" für Honeycomb und nach oben definiert, um das Holo-Thema zu verwenden:
%Vor%Bei Gingerbread werden die TextViews meiner benutzerdefinierten Ansicht automatisch weiß und Honeycomb + automatisch für Holo Light schwarz gefärbt.
Ich DENKEN Ich habe endlich herausgefunden, wie ich es lösen kann. Auf der Grundlage meines ursprünglichen Codes scheint dies mein Problem zu lösen:
%Vor%Beachten Sie den KontextThemeWrapper. Dadurch wird das Dialogfelddesign dem überhöhten Layout zugewiesen. Ich hoffe, dies löst endlich dieses Problem für die Zukunft.
Nur in Textansicht fügen Sie ein Attribut hinzu:
%Vor%und definieren Sie eine weiße Farbe innerhalb der Datei colors.xml, die sich im Ordner res / values befindet
%Vor%Oder Sie können direkt hinzufügen
android:textColor="#fffff"
(obwohl nicht empfohlen. Eine andere Methode wird empfohlen.)
Sie können einen benutzerdefinierten Stil mit einem Schatten anwenden, um Ihren Text unabhängig von der Textfarbe sichtbar zu machen:
%Vor%Allerdings Wenn es für Sie nicht sichtbar genug ist, können Sie einen inneren Schatten anwenden, aber Android hat leider keine Eigenschaft dafür, also müssen Sie etwas wie MagicTextView (erwähnt von ABentSpoon ) Frage: Gibt es einen Weg um einem TextView auf Android einen inneren Schatten hinzuzufügen? ).
Tags und Links android android-layout android-alertdialog