控制对话框位置,在屏幕点击位置弹出对话框

来源:互联网 发布:淘宝网的苹果旗舰店 编辑:程序博客网 时间:2024/05/19 14:51

问题:

1,Dialog默认会显示在屏幕正中间位置,如何控制其显示位置?

2,如何在点击位置显示Dialog

 

Dialog默认会显示在屏幕正中间位置,如何控制其显示位置?

控制dialog的弹出位置:

 

通过Window类的setGravity(int)来进行设置。

如:在屏幕顶端显示:

Dialogdialog = dialog = new Dialog(this, R.style.dialog);

dialog.setContentView(R.layout.q006_dialog); //R.layout.q006_dialog为自定义的dilog布局

Windowmwindow = dialog.getWindow();

mwindow.setGravity(Gravity.TOP);

dialog.show();

 

如何在点击位置显示Dialog

首先,需要获得被点击View的绝对坐标:

//假设屏幕中有一个ImageView img,获得其在屏幕上的坐标

finalint[] location = new int[2];

img.getLocationOnScreen(location);

 

然后,通过设置WindowManager.LayoutParams,控制Dialog显示位置

 

WinowManager.LayoutParams lp = mwindow.getAttributes();

lp.x= location[0];

lp.y= location[1];

Toast.makeText(context,"x:"+lp.x+",y:"+lp.y, 3000).show();

mwindow.setAttributes(lp);

 

备注:还可以通过viewgetHeight(),getWidth()方法获得view的宽度、高度信息,进一步设置dialog位置。

如:

lp.x= location[0] - img.getHeight();

lp.y= location[1] - img.getWidth();

 

 

此外,还可以通过设置lpalpha控制dialog的透明度。

默认显示的对话框是不透明的,可以通过设置对话框的alpha值将其变成透明或半透明效果。颜色由R(红)、 G(绿)、B(蓝)组成。除此,还会有一个A(透明度,Alpha)来描述颜色。在颜色的描述中,值为0表示完全透明,值为255,表示不透明。

通过设置Windowsalpha属性也可以设置对话框的透明度。但alpha的取值范围是从01.0。如果该属性值为0,表示完全透明,如果该值为1.0,表示不透明(也就是正常显示的对话框)。

如:lp.alpha = 0.5f;

 

原创粉丝点击