[解決済み] Material Designでアラートダイアログのスタイルが決まらない
質問
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>
私の理解では、ダイアログのボタンのテキストもこれらの色を使用するはずです。私の理解は間違っているのでしょうか、それとも何かもっと必要なことがあるのでしょうか?
解答です。
マークされた回答で、正しい道を歩むことができました。
<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>
どのように解決するのですか?
2019年8月に更新されたアンドロイド用マテリアルコンポーネントライブラリです。
と共に、新しい
Android ライブラリ用マテリアルコンポーネント
を使用すると、新しい
com.google.android.material.dialog.MaterialAlertDialogBuilder
クラスを使用します。
androidx.appcompat.AlertDialog.Builder
クラスを拡張し、最新の Material Design 仕様をサポートします。
こんなのでいいじゃん。
new MaterialAlertDialogBuilder(context)
.setTitle("Dialog")
.setMessage("Lorem ipsum dolor ....")
.setPositiveButton("Ok", /* listener = */ null)
.setNegativeButton("Cancel", /* listener = */ null)
.show();
を拡張して色をカスタマイズすることができます。
ThemeOverlay.MaterialComponents.MaterialAlertDialog
のスタイルになります。
<style name="CustomMaterialDialog" parent="@style/ThemeOverlay.MaterialComponents.MaterialAlertDialog">
<!-- Background Color-->
<item name="android:background">#006db3</item>
<!-- Text Color for title and message -->
<item name="colorOnSurface">@color/secondaryColor</item>
<!-- Text Color for buttons -->
<item name="colorPrimary">@color/white</item>
....
</style>
カスタムスタイルを適用するには を適用するには、コンストラクタを使用するだけです。
new MaterialAlertDialogBuilder(context, R.style.CustomMaterialDialog)
への ボタン、タイトル、本文をカスタマイズします。 この記事をチェックする をご覧ください。
を変更することもできます。 グローバルに を変更することもできます。
<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.MaterialComponents.Light">
...
<item name="materialAlertDialogTheme">@style/CustomMaterialDialog</item>
</style>
サポートライブラリとAPPCOMPAT THEMEを使用します。
新しい
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を紹介します。
関連
-
adb シェルがデバイスのオフラインを求めるプロンプトを表示する
-
Android端末にADBが接続できない!を解決。理由: デバイスが認証されていない!
-
Gradle の同期に失敗しました。com.android.tools.build:gradle が見つかりませんでした。
-
Android Studio を 3.6.3 にアップデートした後、構成 :classpath のアーティファクトをすべて解決できない。
-
RuntimeException: アクティビティを開始できません ComponentInfo solution
-
アプリはGoogle検索でインデックスされません Androidmanifestのクソみたいな黄色い警告
-
ConstraintLayoutのいくつかのプロパティの概要(RelativeLayoutの強化版、LinearLayoutの比例プロパティを含む、階層ツールの削減)。
-
SpinnerのOnItemSelectedListenerのonItemSelectedメソッドの4つのパラメーターの意味
-
アンドロイドスタジオソフトウェア使用詳細説明書
-
[解決済み】appcompat v7でEditTextの最下行の色を変更する。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
Androidのadbデバイスがオフラインであることが判明
-
java.lang.NullPointerException: NULLオブジェクト参照で仮想メソッド......を呼び出そうとしました。
-
android E/RecyclerView﹕ アダプタが接続されていないため、レイアウトをスキップする。
-
アンドロイドプロジェクトのパッケージングにgradleを使用する際の問題点
-
最新のandroidプロジェクトディレクトリにあるarmeabi-v7aとarmeabiの具体的な意味とその違いを教えてください。
-
telnet'が内部コマンドまたは外部コマンドとして認識されない 解決方法
-
Error:A problem occurred configuring project ':app'. > ビルドを見つけられませんでした。
-
GoogleMapと連携し、位置情報の取得が可能
-
Android カスタムスピナーコントロールのドロップダウン・ボックスの実装
-
[解決済み] アンドロイド5で、デフォルトのダイアログボタンのテキスト色を変更する方法