更改构建版本后,Android自定义警报对话框显示错误
我正在开发一个简单的演示。 在这个演示中,我只是创建一个简单的自定义警报对话框。 它工作正常。
它向我展示了当我在1.6版本中构建应用程序时的完美结果,但是当我将Android版本从1.6更改为2.2时,它显示出意外的结果。 它不显示我显示自定义警报对话框的背景屏幕。
这是我的xml文件。 自定义对话框主题文件
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="CustomDialogTheme" parent="@android:style/AlertDialog">
<item name="android:windowFrame">@null</item>
<item name="android:windowContentOverlay">@null</item>
<item name="android:backgroundDimEnabled">true</item>
<item name="android:windowIsTranslucent">true</item>
<item name="android:windowNoTitle">true</item>
<item name="android:windowAnimationStyle">@android:style/Theme.Dialog</item>
</style>
</resources>
这是我的CustomConfirmOkDialog类
package com.utility.org;
import android.app.Activity;
import android.app.Dialog;
import android.view.View;
import android.view.Window;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;
public class CustomConfirmOkDialog extends Dialog implements OnClickListener
{
private Button okButton = null;
private TextView infoText=null,confirmBody=null;
private int errorMessage=0;
@SuppressWarnings("unused")
private Activity activity;
public CustomConfirmOkDialog(Activity context,int customdialogtheme,int errorMessage)
{
super(context,customdialogtheme);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.confirm_ok);
this.errorMessage = errorMessage;
this.activity = context;
initControls();
}
private void initControls()
{
okButton = (Button) findViewById(R.id.ok_button);
okButton.setOnClickListener(this);
infoText = (TextView)findViewById(R.id.infoText);
confirmBody = (TextView)findViewById(R.id.confirmBody);
switch (this.errorMessage)
{
case Utility.INVALID_USERNAME_PASSWORD:
try
{
infoText.setText(R.string.signIn);
confirmBody.setText(R.string.invalidUsernameAndPassword);
}
catch (Exception e)
{
e.printStackTrace();
}
break;
default:
break;
}
}
public void onClick(View v)
{
dismiss();
}
}
使用下面的代码从我的主要活动中调用此类。
CustomConfirmOkDialog dialog = new CustomConfirmOkDialog(MainActivity.this, R.style.CustomDialogTheme, Utility.INVALID_USERNAME_PASSWORD);
dialog.show();
在这里您可以清楚地看到1st image
显示背景。 它在android 1.6版本中生成,而2nd image
不显示背景。 它显示整个黑屏。 它的内置版本为android 2.2。 如果有人能解决这个问题,我非常感谢。
任何人都可以帮助我解决这个简单而愚蠢的问题吗?
提前致谢。
它通过更改Custom Dialog Theme xml文件中的以下代码解决了我的问题。
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="CustomDialogTheme" parent="@android:style/Theme.Translucent.NoTitleBar">
<item name="android:windowFrame">@null</item>
<item name="android:windowContentOverlay">@null</item>
<item name="android:backgroundDimEnabled">true</item>
<item name="android:windowIsTranslucent">true</item>
<item name="android:windowNoTitle">true</item>
</style>
</resources>
我也面临同样的问题。 问题是当我调用Dialog类的构造函数时
对话框(Context context,int themeId)
它会隐藏背景活动。 我发现的唯一解决方案是不要调用这个构造函数,而只是调用
对话框(上下文上下文)
并在布局文件中设置你的风格。
所以在你的代码中,只能写
超(上下文)
代替
超级(背景,主题);
显然,这是一个已知的问题。
只有当您尝试从框架主题继承时才会发生这种情况。 直接使用@android:style
将仍然将它们视为非全屏,如预期的那样穿透黑色背景。
一种解决方法是以近乎空白的主题(如面板或半透明)开始,然后在自己的布局中呈现所需内容(例如对话框边缘等)。
以为我自己还没有完全理解这个解决方案。
实际上,我不再确定他们正在谈论你所看到的完全相同的错误,因为他们正在谈论它不适用于旧版本的sdk(不是像你这样的新版本)。 查看错误报告。
链接地址: http://www.djcxy.com/p/26923.html上一篇: Android Custom Alert Dialog Display Error after changing the Build Version