今天给大家讲一些关于对话框的小知识点。
1.设置对话框的位置
AlterDialog dialog=new AlterDialog.Builder(this) .setMessage("在顶端显示对话框").setPositiveButton("确定",null).create(); Window window=dialog.getWindow(); //调用setGravity方法在屏幕左上方显示 window.setGravity(Gravity.TOP|Gravity.LEFT); dialog.show();2.android默认AlterDialog弹出的对话框无论单击任何按钮都会关闭对话框,如何才能做到自定义它的关闭与开启
通过常规方法无法阻止对话框的关闭,但可以采用一种欺骗系统的方法来达到目的。在AlterDialog类中有一个mShowing变量,当该变量为true时表示对话框正在显示,系统会关闭对话框。如果mShowing变量是false,系统认为对话框已经关闭而不再关闭对话框。因此只需要在按钮单击实践中将该变量设置为false,系统就不会自动关闭对话框了。
try{ Field field=dialog.getClass().getSuperclass().getDeclaredField("mShowing"); field.setAccessible(true); //将mShowing变量设为fals,好让系统认为对话框已关闭 field.set(dialog,false); }catch(Exception e){ }
执行上面的代码后,关闭对话框的dismiss()方法将失效,因此,如果想关闭对话框,还需要将AlterDialog.mShowing变量的值设为true;
3.改变对话框的透明度
通过设置Window的alpha属性可以改变对话框的透明度
AlterDialog dialog=new AlterDialog.Builder(this) .setMessage("透明对话框").setPositiveButton("确定",null).create(); Window window =dialog.getWindow(); WindowManager.LayoutParam lp=window.getAttributes(); //设置透明度为0.7f //alpha的属性值的范围为0.0f到1.0f,1.0f(默认值)不透明,0.0f完全透明 lp.alpha=0.7f; window.setAttributes(lp); dialog.show();