改变support中AlertDialog的样式

前言

原文:http://blog.isming.me/2015/08/31/modify-alert-style/

android最近的support库提供了AlertDialog,可以让我们在低于5.0的系统使用到跟5.0系统一样的Material Design风格的对话框。

步骤

自定义一个Style

values/styles.xml中创建一个Style

1
2
3
4
5
6
7
8
<style name="MyAlertDialogStyle" parent="Theme.AppCompat.Light.Dialog.Alert">
<!-- Used for the buttons -->
<item name="colorAccent">#FFC107</item>
<!-- Used for the title and text -->
<item name="android:textColorPrimary">#FFFFFF</item>
<!-- Used for the background -->
<item name="android:background">#4CAF50</item>
</style>

在创建对话框时使用

1
2
3
4
5
6
AlertDialog.Builder builder = new AlertDialog.Builder(this, R.style.MyAlertDialogStyle);
builder.setTitle("AppCompatDialog");
builder.setMessage("Lorem ipsum dolor...");
builder.setPositiveButton("OK", null);
builder.setNegativeButton("Cancel", null);
builder.show();

全局使用style(可选)

这样的方法是每个地方使用的时候,都要在构造函数传我们的这个DialogTheme,我们也可以全局的定义对话框的样式。

1
2
3
4
<style name="MyTheme" parent="Base.Theme.AppCompat.Light">
<item name="alertDialogTheme">@style/MyAlertDialogStyle</item>
<item name="colorAccent">@color/accent</item>
</style>

在我们的AndroidManifest.xml文件中声明application或者activity的时候设置themeMyTheme即可.
不过需要注意的一点是,我们的Activity需要继承自AppCompatActivity