Android实现悬浮对话框代码
程序员文章站
2024-03-31 12:46:34
先给大家展示下效果图,大家觉效果满意,请参考实现代码。
直接上代码:
private void setdialog(){
view view =...
先给大家展示下效果图,大家觉效果满意,请参考实现代码。
直接上代码:
private void setdialog(){ view view = getlayoutinflater().inflate(r.layout.dialog_country, null); mdialog = new dialog(this); mdialog.setcontentview(view, new layoutparams(layoutparams.fill_parent, layoutparams.wrap_content)); window window = mdialog.getwindow(); windowmanager.layoutparams wl = window.getattributes(); wl.x = 0; wl.y = getwindowmanager().getdefaultdisplay().getheight(); wl.width = viewgroup.layoutparams.match_parent; wl.height = viewgroup.layoutparams.wrap_content; mdialog.onwindowattributeschanged(wl); mdialog.setcanceledontouchoutside(true); mdialog.show(); button btnchina = (button) view.findviewbyid(r.id.btnchina); button btnusa = (button) view.findviewbyid(r.id.btnusa); button btnuk = (button) view.findviewbyid(r.id.btnuk); button btncancel = (button) view.findviewbyid(r.id.btncancel); btnchina.setonclicklistener(new onclicklistener(){ @override public void onclick(view v) { // todo auto-generated method stub mquery.id(r.id.btncountry).gettextview().settext("china"); mdialog.dismiss(); } }); btnusa.setonclicklistener(new onclicklistener(){ @override public void onclick(view v) { // todo auto-generated method stub mquery.id(r.id.btncountry).gettextview().settext("usa"); mdialog.dismiss(); } }); btnuk.setonclicklistener(new onclicklistener(){ @override public void onclick(view v) { // todo auto-generated method stub mquery.id(r.id.btncountry).gettextview().settext("uk"); mdialog.dismiss(); } }); btncancel.setonclicklistener(new onclicklistener(){ @override public void onclick(view v) { // todo auto-generated method stub mdialog.dismiss(); } }); }
首先inflate一个xml文件,产生一个view;再创建一个dialog,设置dialog的view为inflate的view;然后通过windowmanager.layoutparams设置dialog的长度、宽度、显示的位置等等,最后setcanceledontouchoutside(true),点击其他地方可以退出dialog。