Java 使用Theme.Light.NoTitleBar显示灯光警报对话框

Java 使用Theme.Light.NoTitleBar显示灯光警报对话框,java,android,android-alertdialog,Java,Android,Android Alertdialog,我在清单中使用了以下行: android:theme="@android:style/Theme.Light.NoTitleBar" 要在我的应用程序中没有标题栏并显示AlertDialog的轻型版本,如示例所示: 但它仍然以黑暗主题展示: 我的对话框Java代码: new AlertDialog.Builder(FreeDraw.this) .setIcon(android.R.drawable.ic_dialog_alert) .setTitle("Clear

我在清单中使用了以下行:

android:theme="@android:style/Theme.Light.NoTitleBar"
要在我的应用程序中没有标题栏并显示AlertDialog的轻型版本,如示例所示:

但它仍然以黑暗主题展示:

我的对话框Java代码:

    new AlertDialog.Builder(FreeDraw.this)
    .setIcon(android.R.drawable.ic_dialog_alert)
    .setTitle("Clear Drawing?")
    .setMessage("Do you want to clear the drawing board?")
    .setPositiveButton("Yes", new DialogInterface.OnClickListener() {

        @Override
        public void onClick(DialogInterface dialog, int which) {
            finish();
            startActivity(getIntent());  
        }
    })
    .setNegativeButton("No", null)
    .show();

如何保持AlertDialog的主题灯?

您必须使用
AlertDialog Builder
。使用它,您可以设置对话框的样式。请看以下示例:


@颜色/背色
@颜色/背色

在创建
警报对话框时,可以使用类似的方法:

AlertDialog.Builder builder = null;
if(Build.VERSION.SDK_INT < Build.VERSION_CODES.HONEYCOMB) {
    builder = new AlertDialog.Builder(BaseActivity.this);
} else {
    builder = new AlertDialog.Builder(BaseActivity.this, AlertDialog.THEME_HOLO_LIGHT);
}
// ... do your other stuff.
AlertDialog.Builder=null;
if(Build.VERSION.SDK\u INT

此代码将在较新版本中创建Holo样式的AlertDialog,在较旧版本的Android设备上创建普通的基于设备的AlertDialog。

您文章中的顶部对话框是Holo Light主题对话框,而底部对话框是较旧的主题对话框。您无法在蜂巢下面的版本上获得全息灯光主题对话框。下面是我根据设备运行的安卓版本选择light主题的一个小片段

AlertDialog.Builder
将使用所传递上下文的主题。您可以使用
ContextThemeWrapper
来设置此设置

ContextThemeWrapper themedContext;
if ( Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB ) {
    themedContext = new ContextThemeWrapper( FreeDraw.this, android.R.style.Theme_Holo_Light_Dialog_NoActionBar );
}
else {
    themedContext = new ContextThemeWrapper( FreeDraw.this, android.R.style.Theme_Light_NoTitleBar );
}
AlertDialog.Builder builder = new AlertDialog.Builder(themedContext);

如果您使用的是来自谷歌的新材料库,并且希望保持主题的一致性

implementation 'com.google.android.material:material:1.0.0-beta01'
只需将其用于灯光
AlertBox

AlertDialog.Builder builder = new AlertDialog.Builder(getActivity(),R.style.Theme_MaterialComponents_Light_Dialog_Alert);
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity(),R.style.Theme_MaterialComponents_Dialog_Alert);
对于暗
AlertBox

AlertDialog.Builder builder = new AlertDialog.Builder(getActivity(),R.style.Theme_MaterialComponents_Light_Dialog_Alert);
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity(),R.style.Theme_MaterialComponents_Dialog_Alert);

我看到在我运行JB 4.2.2的手机上,它覆盖了整个白色屏幕!