Theme.Lightに設定されているPreferenceActivityからダイアログを表示しようとしています。ダイアログには、暗い背景に暗いテキストを示していますAndroid:Theme.Lightアクティビティからダイアログを表示すると問題が発生する
私はそれが親アクティビティ、または類似のものからテキストの色を継承しているので、それが暗いテキストを使用しますと仮定します。ダイアログで、暗い背景に白いテキストを使用するか、暗いテキストで白い背景を使用するか、PreferenceActivityがTheme.Lightに設定されているときに行うようにします。
これは既知の問題のようですが、私が見つけた回避策には、Theme.Dialogを拡張し、ダイアログをインスタンス化するために使用するカスタムスタイルを作成して使用することが含まれています。何かのように:
<style name="CustomDialog" parent="@android:style/Theme.Dialog">
<item name="android:textColor">?android:attr/textColorPrimaryInverseDisableOnly</item>
</style>
Dialog dialog = new Dialog(context, R.style.CustomDialog);
私はこれを試しましたが、違いはありませんでした。また、textColorの値をいくつか試しましたが、どれもDialogのテキストの色を変更していませんでした。健全性チェックとして、私が追加:
赤色の背景との対話の結果、スタイル、へ <item name="android:background">#FFFF0000</item>
(私は、私は適切にダイアログをインスタンス化していますことを確信しています)。
私が解決に至った最も近いのは、ダイアログの背景色を白に設定することです。下のダイアログが表示されます。いくつかのバージョンまたは一部のデバイスは、テキストの色を反転するとき、私は見ています同じ動作を使用しない場合がありますので、しかし、これは、良い解決策ではありません。
だから、A上のテキストの色を設定するための良い方法がありますTheme.Lightアクティビティから表示されるダイアログ
私は似たようなもので苦労しているように思います。決してそれを働かせないでください。私の最終的な回避策は、ジンジャーブレッドの色、すなわちres/values-v8で色を定義し、res/valuesで明度を定義する複数の値のリソースを持つことでした。 –
私の誘惑は、リストの背景を白にハードコードし、リストのテキストの色を黒にすることです。これは、デバイスやバージョンに関係なく、白い背景に黒のテキストが表示されることを期待しています。 – ab11
それは確かにうまくいくでしょう。しかし、私はこの痛みのポイントは、デバイスのテーマとブレンドすることだと仮定...ジンジャーブレッドは以前のバージョンよりもずっと暗かったので、特別なケースです。 –