私は自分のアプリにappCompatマテリアルデザインを追加しましたが、アラートダイアログは私の一次色、一次色、アクセント色を使用していないようです。
これが私の基本スタイルです。
<style name="MaterialNavyTheme" parent="@style/Theme.AppCompat.Light.DarkActionBar">
<item name="colorPrimary">@color/apptheme_color</item>
<item name="colorPrimaryDark">@color/apptheme_color_dark</item>
<item name="colorAccent">@color/apptheme_color</item>
<item name="Android:textColorPrimary">@color/action_bar_gray</item>
</style>
私の理解によれば、ダイアログボタンのテキストもこれらの色を使うべきです。私は自分の理解が間違っているのでしょうか。
Solution:
マークされた答えは私を正しい方向に導いた。
<style name="MaterialNavyTheme" parent="@style/Theme.AppCompat.Light.DarkActionBar">
<item name="colorPrimary">@color/apptheme_color</item>
<item name="colorPrimaryDark">@color/apptheme_color_dark</item>
<item name="colorAccent">@color/apptheme_color</item>
<item name="Android:actionModeBackground">@color/apptheme_color_dark</item>
<item name="Android:textColorPrimary">@color/action_bar_gray</item>
<item name="sdlDialogStyle">@style/DialogStyleLight</item>
<item name="Android:seekBarStyle">@style/SeekBarNavyTheme</item>
</style>
<style name="StyledDialog" parent="Theme.AppCompat.Light.Dialog">
<item name="colorPrimary">@color/apptheme_color</item>
<item name="colorPrimaryDark">@color/apptheme_color_dark</item>
<item name="colorAccent">@color/apptheme_color</item>
</style>
新しいAppCompat v22.1
では、新しい Android.support.v7.app.AlertDialog を使用できます。
このようなコードを使うだけです:
import Android.support.v7.app.AlertDialog
AlertDialog.Builder builder =
new AlertDialog.Builder(this, R.style.AppCompatAlertDialogStyle);
builder.setTitle("Dialog");
builder.setMessage("Lorem ipsum dolor ....");
builder.setPositiveButton("OK", null);
builder.setNegativeButton("Cancel", null);
builder.show();
そして、このようなスタイルを使います。
<style name="AppCompatAlertDialogStyle" parent="Theme.AppCompat.Light.Dialog.Alert">
<item name="colorAccent">#FFCC00</item>
<item name="Android:textColorPrimary">#FFFFFF</item>
<item name="Android:background">#5fa3d0</item>
</style>
それ以外の場合は、現在のテーマで定義できます。
<style name="AppTheme" parent="Theme.AppCompat.Light">
<!-- your style -->
<item name="alertDialogTheme">@style/AppCompatAlertDialogStyle</item>
</style>
そしてあなたのコードで:
import Android.support.v7.app.AlertDialog
AlertDialog.Builder builder =
new AlertDialog.Builder(this);
ここでKitKatのAlertDialog:
ダイアログビルダーを初期化するとき、テーマとして2番目のパラメータを渡します。 APIレベル21の材料設計が自動的に表示されます。
AlertDialog.Builder builder = new AlertDialog.Builder(this, AlertDialog.THEME_DEVICE_DEFAULT_DARK);
または、
AlertDialog.Builder builder = new AlertDialog.Builder(this, AlertDialog.THEME_DEVICE_DEFAULT_LIGHT);
AppCompatはダイアログに対してそれをしません(少なくともまだ)
EDIT:現在はしています。必ずAndroid.support.v7.app.AlertDialog
を使用してください
あなたが使用することができます
材料設計ライブラリは、きれいな警告ダイアログ、ボタン、その他の目的のために作られました。 のようなスナックバーです。現在はかなり開発されています。
ガイド、コード、例 - https://github.com/navasmdc/MaterialDesignLibrary
Android Studio 1.0にライブラリを追加する方法のガイド - どうやって材料設計ライブラリをAndroid Studioにインポートできますか?
。
ハッピーコーディング;)
あなたはこのプロジェクトを検討することができます: https://github.com/fengdai/AlertDialogPro
それはあなたにLollipopのものとほとんど同じで重要なテーマ警告ダイアログを提供することができます。 Android 2.1と互換性があります。
このライブラリを試してください。
https://github.com/avast/Android-styled-dialogs
これはDialogFragments
ではなくAlertDialogs
に基づいています(@afollestadのもののように)。主な利点:ダイアログはローテーション後も消えませんし、コールバックはまだ機能します。
何らかの理由でAndroid:textColorはタイトルの色を更新するだけのようです。を使用してメッセージテキストの色を変更できます。
SpannableString.AlertDialog.Builder builder = new AlertDialog.Builder(new ContextThemeWrapper(this, R.style.MyDialogTheme));
AlertDialog dialog = builder.create();
Spannable wordtoSpan = new SpannableString("I know just how to whisper, And I know just how to cry,I know just where to find the answers");
wordtoSpan.setSpan(new ForegroundColorSpan(Color.BLUE), 15, 30, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
dialog.setMessage(wordtoSpan);
dialog.show();