我想更改我的AlertDialog
背景颜色
没有使用自定义对话框
我试图设置主题AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.appContext,r.style.my.Theme);
但不改变背景颜色。
答案 0 :(得分:0)
在res / values /
下创建一个新的Android XML资源文件您想要创建一个继承自默认alertdialog主题的新样式:
<style name="CustomDialogTheme" parent="@android:style/Theme.Dialog">
<item name="android:bottomBright">@color/white</item>
<item name="android:bottomDark">@color/white</item>
<item name="android:bottomMedium">@color/white</item>
<item name="android:centerBright">@color/white</item>
<item name="android:centerDark">@color/white</item>
<item name="android:centerMedium">@color/white</item>
<item name="android:fullBright">@color/orange</item>
<item name="android:fullDark">@color/orange</item>
<item name="android:topBright">@color/blue</item>
<item name="android:topDark">@color/blue</item>
</style>
您可以为AlertDialog的每个部分指定颜色或drawable。 AlertDialog将通过组合3个drawables / colors(顶部,中间,底部)或单个drawable / color(full)来构建它的显示。
在你自己的主题中覆盖android:alertDialogStyle样式(你可以在同一个XML文件中执行此操作):
<style name="MyTheme">
<item name="android:alertDialogStyle">@style/CustomDialogTheme</item>
</style>
在应用标记内的AndroidManifest中覆盖您的应用程序主题:
<application
android:icon="@drawable/icon"
android:label="@string/app_name"
android:theme="@style/MyTheme">
现在您已经定义了应用程序的主题,您主题中覆盖的所有属性都会在整个应用程序中产生共鸣。 例如,如果您还想更改应用程序标题栏的颜色: 您首先要定义一个继承自默认属性
的新样式<style name="MyBackground" parent="android:WindowTitleBackground">
<item name="android:background">@color/blue</item>
</style>
只需将新覆盖的项目添加到您的主题:
<style name="MyTheme">
<item name="android:windowTitleBackgroundStyle">@style/MyBackground</item>
<item name="android:alertDialogStyle">@style/CustomDialogTheme</item>
</style>
答案 1 :(得分:0)
您是否尝试更改孔对话窗口的背景颜色?
未经测试,只查找了API Ref。
AlertDialog正在扩展Dialog。
在对话框中是方法:
getWindow()
窗口http://developer.android.com/reference/android/view/Window.html参考显示方法:
setBackgroundDrawable (Drawable drawable)
and
setBackgroundDrawableResource (int resId)
可以工作。
答案 2 :(得分:0)
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("Title")
.setCancelable(false)
.setPositiveButton("Go", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int id) {
EditText textBox = (EditText) findViewById(R.id.textbox);
doStuff();
}
});
FrameLayout f1 = (FrameLayout)findViewById(R.id.body /*CURRENTLY an ERROR*/);
f1.addView(findViewById(R.layout.dialog_view));
LayoutInflater inflater = getLayoutInflater();
FrameLayout f1 = (FrameLayout)alert.findViewById(android.R.id.body);
f1.addView(inflater.inflate(R.layout.dialog_view, f1, false));
AlertDialog alert = builder.create();
alert.show();
此代码将对话框设置为一个名为dialog_view的自定义布局文件,您可以在那里执行自定义布局。
您希望在该自定义布局中设置背景,以便在布局中设置根布局对象上的背景
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/dialog_layout_root"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:padding="10dp"
android:background="#000000"
/>