在api 21下将主题应用于对话框时的奇怪行为

时间:2016-11-22 09:43:56

标签: android dialog styles themes

我在我的应用中使用主题"Theme.AppCompat.Light.NoActionBar"。 我想让我的一些对话框应用黑暗的AppCompat主题。

所以,我为对话框创建了样式

 <style name="MyDialogStyle" parent="Theme.AppCompat.Dialog">

 </style>

(当父级是“Theme.AppCompat.Dialog.Alert”时同样的问题) 一个没有版本约束的xml文件 和版本为api 21约束的xml文件中的相同样式。  调用我使用此功能的对话框:

 public void showSimplestDialog(View view) {
    AlertDialog.Builder builder = new AlertDialog.Builder(this,R.style.MyDialogStyle);
    AlertDialog alertDialog = builder.setTitle("title")
            .setMessage("message ")
            .create();
    alertDialog.show();
}

api 21+的结果看起来很好

enter image description here

但是在api 17中我得到了一些我无法摆脱的重复背景(即使我尝试将自定义视图应用于使用builder.setView(MyView)的对话框

enter image description here

1 个答案:

答案 0 :(得分:1)

确保您必须import android.support.v7.app.AlertDialog这件事。

然后以这种方式创建

AlertDialog.Builder builder =
       new AlertDialog.Builder(this, R.style.DialogStyle);
            builder.setTitle("Title");
            builder.setMessage("Abc ...");
            builder.setPositiveButton("OK", null);
            builder.setNegativeButton("Cancel", null);
            builder.show();

并在styles.xml

中创建样式
<style name="DialogStyle" parent="Theme.AppCompat.Light.Dialog.Alert">
        <item name="colorAccent">#FFCC00</item>
        <item name="android:textColorPrimary">#FFFFFF</item>
        <item name="android:background">#5fa3d0</item>
    </style>