我编写了一个显示弹出对话框的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
}
答案 0 :(得分:69)
要扩展@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的答案更好,因为你没有调整对话框的大小。如果设置窗口的背景可绘制,则覆盖一些现有的尺寸信息并获得非标准宽度的对话框。
如果您在主题上设置背景并在对话框中设置主题,您最终会得到一个对话框,其颜色如您所想,但仍然是正确的宽度。
答案 1 :(得分:55)
如果您只想要一个浅色主题而不是特定颜色,那么您可以将主题ID传递给AlertDialog.Builder构造函数。
AlertDialog.Builder(this, AlertDialog.THEME_HOLO_LIGHT)...
或
AlertDialog.Builder(this, AlertDialog.THEME_DEVICE_DEFAULT_LIGHT)...
答案 2 :(得分:27)
积分转到Sushil
像往常一样创建AlertDialog:
AlertDialog.Builder dialog = new AlertDialog.Builder(getContext());
Dialog dialog = dialog.create();
dialog.show();
在对话框中调用show()后,设置背景颜色如下:
dialog.getWindow().setBackgroundDrawableResource(android.R.color.background_dark);
答案 3 :(得分:9)
对于任何名为myDialog
的对话框,在致电myDialog.show();
后,您可以致电:
myDialog.getWindow().getDecorView().getBackground().setColorFilter(new LightingColorFilter(0xFF000000, CUSTOM_COLOR));
其中CUSTOM_COLOR
采用8位十六进制格式,例如0xFF303030
。这里,FF
是alpha值,其余是十六进制的颜色值。
答案 4 :(得分:2)
要更改应用中所有对话框和弹出窗口的背景颜色,请使用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>
文档:
答案 5 :(得分:1)
您可以创建自定义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);
答案 6 :(得分:1)
我要更改对话框按钮和背景色,您需要扩展Dialog主题,例如:
library(magrittr)
library(ROCR)
library(caret)
library(dplyr)
library(ggplot2)
data(GermanCredit)
GermanCredit %<>% arrange(Class)
GermanCredit$perfect_prob = sort(runif(nrow(GermanCredit)), decreasing = TRUE)
perf = performance(prediction(GermanCredit$perfect_prob, GermanCredit$Class), "tpr", "fpr")
data.frame(FalsePositive = unlist(perf@x.values),
TruePositive = unlist(perf@y.values),
method = rep(names(select(GermanCredit, perfect_prob)),
times=c(length(perf@x.values[[1]])))) %>%
ggplot(aes(x=FalsePositive, y=TruePositive, color=method)) +
geom_line()
之后,您需要将此自定义样式传递给对话框生成器,例如。像这样:
> levels(GermanCredit$Class)
[1] "Bad" "Good"
如果要更改对话框内文本的颜色,可以将自定义视图传递给此Builder:
<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)
答案 7 :(得分:1)
您可以使用自定义样式:
<!-- Alert Dialog -->
<style name="ThemeOverlay.MaterialComponents.MaterialAlertDialog_Background" parent="@style/ThemeOverlay.MaterialComponents.MaterialAlertDialog">
<!-- Background Color-->
<item name="android:background">@color/.....</item>
<!-- Text Color for title and message -->
<item name="colorOnSurface">@color/......</item>
<!-- Style for positive button -->
<item name="buttonBarPositiveButtonStyle">@style/PositiveButtonStyle</item>
<!-- Style for negative button -->
<item name="buttonBarNegativeButtonStyle">@style/NegativeButtonStyle</item>
</style>
<style name="PositiveButtonStyle" parent="@style/Widget.MaterialComponents.Button">
<!-- text color for the button -->
<item name="android:textColor">@color/.....</item>
<!-- Background tint for the button -->
<item name="backgroundTint">@color/primaryDarkColor</item>
</style>
只需使用默认的MaterialAlertDialogBuilder
:
new MaterialAlertDialogBuilder(AlertDialogActivity.this,
R.style.ThemeOverlay_MaterialComponents_MaterialAlertDialog_Background)
.setTitle("Dialog")
.setMessage("Message... ....")
.setPositiveButton("Ok", /* listener = */ null)
.show();
答案 8 :(得分:-2)
使用警告对话框构建器上的setInverseBackgroundForced(true)
来反转背景。
答案 9 :(得分:-4)
仅更新您的导入。
import android.app.AlertDialog;
到
import android.support.v7.app.AlertDialog;
它将被修复。