アラートダイアログにAndroid Theme.Lightテーマを設定しようとしていますが、これまでのところ成功していません。いくつかのチュートリアルを読んだ後、次を使用してそれを収集しました- AlertDialog.Builderテーマをコンストラクタで直接設定することはできません(少なくともAPIレベル7)。
私が見つけた別の解決策はContextThemeWrapperを使用することです。これは誰もが私の問題を解決すると確信しています。だから私はこのようなものをコーディングしました:
AlertDialog.Builder builder = new AlertDialog.Builder(
new ContextThemeWrapper(context, R.style.popup_theme));
私は値のフォルダーで私のテーマを説明しました:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="back_color">#ffffffff</color>
<style name="popup_theme" parent="@Android:style/Theme.Light">
<item name="Android:windowBackground">@color/back_color</item>
<item name="Android:colorBackground">@color/back_color</item>
</style>
残念ながら、私はまだデフォルトのTheme.Dialog.Alertテーマを取得しています。誰かが理由を教えてもらえますか?どこがいけないの?
[〜#〜] edit [〜#〜]:私の質問に対する答えがわからない場合は、投票してください。行き詰まる質問を投稿するという悪い癖があります:(
変化する parent="Android:Theme.Light"
からparent="@Android:style/Theme.Light"
これも理解するのに少し時間がかかりました。
目下の問題は、Theme.LightとTheme.Holo.Lightなどがアクティビティを中心に設計されていることです。ダイアログのテーマは、@ Android:style/Theme.Dialogなど、ダイアログに固有のプロパティを含むテーマに基づいている必要があります。
<style name="popup_theme" parent="@Android:style/Theme.Dialog">
次のようなものを使用してTheme.Dialogをオーバーライドしてみてください。
<item name="Android:textAppearance">?android:attr/textAppearanceInverse</item>
これを試して:
<style name="popup_theme" parent="Theme.AppCompat.Light.Dialog.Alert">
parent="Android:style/Theme.Light"
これは私がやったことです。そしてそれは私のために働いた
AlertDialog.Builder builder = new AlertDialog.Builder(context,R.style.Theme_AppCompat_Light_Dialog);