27

アラート ダイアログに 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テーマを取得しています。誰でも理由を教えてもらえますか? どこが間違っていますか?

編集:私の質問に対する答えがわからない場合は、投票してください。私は行き詰まる質問を投稿する悪い癖があります :(

4

5 に答える 5

6

parent="android:Theme.Light"に変更parent="@android:style/Theme.Light"

于 2011-07-18T07:28:20.290 に答える
3

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

当面の問題は、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>
于 2012-08-01T20:11:35.203 に答える
2

これを試して:

<style name="popup_theme" parent="Theme.AppCompat.Light.Dialog.Alert">
于 2016-08-23T11:03:23.090 に答える
1
parent="android:style/Theme.Light"
于 2011-11-10T04:40:30.343 に答える