被这个问题难住了很长时间,在网长查了很多,说是可以显示,但自己尝试总不能弹出。最后在一个论坛中搜到一个回贴,试了一下居然成功了。在Activity可以直接弹出,个人觉得在Service中弹出时,长宽可能变为0了,所以不可见。如果有弹不出的可以试一下加上最后那一段设置界面大小的代码试试!把代码贴上
_EdtPassword = new EditText(_Context);
AlertDialog.Builder builder = new AlertDialog.Builder(_Context);
builder.setTitle("请输入密码");
builder.setView(_EdtPassword);
builder.setPositiveButton("确定", new DialogInterface.OnClickListener(){
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
String ps = UCOper.getSaveInfo(_Context, "password");
if(ps == null)
ps = "";
if(!_EdtPassword.getText().toString().equals(ps))
{
UCOper.dispInfo(_Context, "输入的密码不正确,请重新输入!");
SetFocus(_EdtPassword);
CloseAlertDialog(dialog, false);
}
else
CloseAlertDialog(dialog, true);
}});
AlertDialog ad = builder.create();
//ad.getWindow().setType(WindowManager.LayoutParams.TYPE_SYSTEM_DIALOG);
ad.getWindow().setType(WindowManager.LayoutParams.TYPE_SYSTEM_ALERT);
WindowManager.LayoutParams lp = ad.getWindow().getAttributes();
WindowManager wm = (WindowManager) _Context
.getSystemService(Context.WINDOW_SERVICE);
Display display = wm.getDefaultDisplay();
if (display.getHeight() > display.getWidth())
{
lp.width = (int) (display.getWidth() * 1.0);
}
else
{
lp.width = (int) (display.getWidth() * 0.5);
}
ad.getWindow().setAttributes(lp);
ad.show();