如何设置AlertDialog背景颜色

时间:2015-04-07 09:31:09

标签: android

我想更改我的AlertDialog背景颜色

  

没有使用自定义对话框

我试图设置主题AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.appContext,r.style.my.Theme);但不改变背景颜色。

3 个答案:

答案 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"
              />