0

style.xml にいくつかの小さなカスタマイズがあります。

<style name="AppBaseTheme" parent="android:Theme.Holo.Light.NoActionBar"></style>

    <!-- Application theme. -->
    <style name="AppTheme" parent="AppBaseTheme">
        <item name="android:background">@color/light_grey</item>
        <item name="android:textColor">@color/white</item>
    </style>

スタイリングがアクティビティに正しく適用されるようになりました。

しかし、alertdialog を作成すると、背景色がダイアログのタイトルと本文に適用されますが、これは望ましくありません。アラートダイアログをそのままのスタイルにしたい。

アラートダイアログは次のとおりです。

AlertDialog.Builder builder = new AlertDialog.Builder(context);
            builder.setTitle("Wtitle").setMessage("message");
            builder.setNeutralButton("ok", null);
            builder.show();

誰でも助けることができますか?

4

1 に答える 1

0

実用的な解決策があります-ドキュメントに記載されているように、テーマで別のAlertDialog.Builderコンストラクターを使用します。アイデアは基本的に、この「アラートダイアログのテーマを変更する方法」から来ています:

  • styles.xml に奇妙な点が 1 つありandroid:backgroundますandroid:windowBackgroundすべてのビューに同じ背景が必要な場合 (可能だとは思えません)、ビューの基本テーマを設定できるため、そうする理由はないようです。アプリは完全に異なる属性を必要とするため、アプリケーションのテーマとビューのテーマを干渉することは基本的に良い考えではないと思います。というわけで、以下のようにしましょう。

    <resources>
        <style name="AppBaseTheme" parent="android:Theme.Holo.Light.NoActionBar"></style>
    
        <!-- Application theme. -->
        <style name="AppTheme" parent="AppBaseTheme">
            <item name="android:windowBackground">@color/light_grey</item>
            <item name="android:textColor">@color/white</item>
        </style>
    </resources>
    
  • ダイアログ ビルダーは、独自のテーマで作成する必要があります。

    AlertDialog.Builder builder = new AlertDialog.Builder(new ContextThemeWrapper(this, android.R.style.Theme_Dialog));
    

    ここで、何らかの理由で、コンストラクターAlertDialog.Builder (Context context, int theme)が正しく機能せず、ContextThemeWrapper必要であることに注意してください (すべてのプロパティがテーマに含まれているわけではなく、ContextThemeWrapper を使用してのみテーマが「再作成」されるためと思われます)。

于 2013-07-26T06:23:23.010 に答える