Androidポップアップダイアログを表示するコードを書きましたが、背景色を黒から白に変更してから、文章の色を変更したいです。
これはダイアログのコードです:
mPrefs = PreferenceManager.getDefaultSharedPreferences(this);
Boolean welcomeScreenShown = mPrefs.getBoolean(welcomeScreenShownPref, false);
if (!welcomeScreenShown) {
String whatsNewText = getResources().getString(R.string.Text);
new AlertDialog.Builder(this).setMessage(whatsNewText).setPositiveButton(
R.string.ok, new DialogInterface.OnClickListener(){
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
}).show();
SharedPreferences.Editor editor = mPrefs.edit();
editor.putBoolean(welcomeScreenShownPref, true);
editor.commit(); // Very important to save the preference
}
明るいテーマだけが必要で、特定の色にこだわりがない場合は、AlertDialog.BuilderコンストラクターにテーマIDを渡すことができます。
AlertDialog.Builder(this, AlertDialog.THEME_HOLO_LIGHT)...
または
AlertDialog.Builder(this, AlertDialog.THEME_DEVICE_DEFAULT_LIGHT)...
@DaneWhiteの答えを拡張するために、組み込みのテーマに依存する必要はありません。独自のスタイルを簡単に提供できます。
<style name="MyDialogTheme" parent="Theme.AppCompat.Light.Dialog.Alert">
<item name="Android:background">@color/myColor</item>
</style>
次に、Builderコンストラクターで適用します。
AlertDialog alertDialog = new AlertDialog.Builder(getContext(), R.style.MyDialogTheme)
...
.create();
これは、Android.support.v7.app.AlertDialog
または Android.app.AlertDialog
ダイアログのサイズを変更しないため、これは@DummyDataの答えよりもうまく機能します。ウィンドウの背景をドロアブルに設定すると、既存の寸法情報が上書きされ、標準の幅ではないダイアログが表示されます。
テーマに背景を設定し、ダイアログにテーマを設定すると、ダイアログは目的の色になりますが、それでも正しい幅になります。
クレジットは Sushil
通常どおりAlertDialogを作成します。
AlertDialog.Builder dialog = new AlertDialog.Builder(getContext());
Dialog dialog = dialog.create();
dialog.show();
ダイアログでshow()を呼び出した後、背景色を次のように設定します。
dialog.getWindow().setBackgroundDrawableResource(Android.R.color.background_dark);
myDialog
というダイアログについては、myDialog.show();
を呼び出した後、次を呼び出すことができます。
myDialog.getWindow().getDecorView().getBackground().setColorFilter(new LightingColorFilter(0xFF000000, CUSTOM_COLOR));
どこ CUSTOM_COLOR
は8桁の16進形式です(例: 0xFF303030
。ここで、FF
はアルファ値で、残りは16進数のカラー値です。
アプリのAllダイアログとポップアップの背景色を変更するには、colorBackgroundFloating
属性を使用します。
<style name="MyApplicationTheme" parent="@style/Theme.AppCompat.NoActionBar">
...
<item name="colorBackgroundFloating">
@color/background</item>
<item name="Android:colorBackgroundFloating" tools:targetApi="23">
@color/background</item>
...
</style>
ドキュメンテーション:
ダイアログボタンと背景色を変更するには、Dialogテーマを拡張する必要があります。例:
<style name="MyDialogStyle" parent="Android:Theme.Material.Light.Dialog.NoActionBar">
<item name="Android:buttonBarButtonStyle">@style/MyButtonsStyle</item>
<item name="Android:colorBackground">@color/white</item>
</style>
<style name="MyButtonsStyle" parent="Widget.AppCompat.Button.ButtonBar.AlertDialog">
<item name="Android:textColor">@color/light.blue</item>
</style>
その後、このカスタムスタイルをダイアログビルダーに渡す必要があります。このような:
AlertDialog.Builder(requireContext(), R.style.MyDialogStyle)
ダイアログ内のテキストの色を変更する場合は、このビルダーにカスタムビューを渡すことができます。
AlertDialog.Builder.setView(View)
または
AlertDialog.Builder.setView(@LayoutResource int)
カスタムalertDialogを作成し、xmlレイアウトを使用できます。レイアウトでは、背景色とテキスト色を設定できます。
このようなもの:
Dialog dialog = new Dialog(this, Android.R.style.Theme_Translucent_NoTitleBar);
LayoutInflater inflater = (LayoutInflater)ActivityName.this.getSystemService(LAYOUT_INFLATER_SERVICE);
View layout = inflater.inflate(R.layout.custom_layout,(ViewGroup)findViewById(R.id.layout_root));
dialog.setContentView(view);