web-dev-qa-db-ja.com

設定Android Theme.Light for Alert Dialog

アラートダイアログに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 [〜#〜]:私の質問に対する答えがわからない場合は、投票してください。行き詰まる質問を投稿するという悪い癖があります:(

27

変化する parent="Android:Theme.Light"からparent="@Android:style/Theme.Light"

6
Gallal

これも理解するのに少し時間がかかりました。

目下の問題は、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>
3
tomwardiii

これを試して:

<style name="popup_theme" parent="Theme.AppCompat.Light.Dialog.Alert">
1
Ashwin
parent="Android:style/Theme.Light"
1
Chandu

これは私がやったことです。そしてそれは私のために働いた

AlertDialog.Builder builder = new AlertDialog.Builder(context,R.style.Theme_AppCompat_Light_Dialog);
0
Rupam Das