首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在屏幕的任意位置显示AlertDialog

在屏幕的任意位置显示AlertDialog
EN

Stack Overflow用户
提问于 2011-03-29 15:04:27
回答 4查看 87.6K关注 0票数 108

当我们在安卓系统中显示AlertDialog时,它会显示在屏幕的中央。有什么方法可以改变位置吗?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-05-19 04:56:44

在搜索了各种帖子后,我找到了解决方案。

代码如下:

代码语言:javascript
复制
private CharSequence[] items = {"Set as Ringtone", "Set as Alarm"};
    AlertDialog.Builder builder = new AlertDialog.Builder(this);
    builder.setItems(items, new DialogInterface.OnClickListener() {
        public void onClick(DialogInterface dialog, int item) {

            if(item == 0) {

            } else if(item == 1) {

            } else if(item == 2) {

            }
        }
    });

     AlertDialog dialog = builder.create();
     dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
     WindowManager.LayoutParams wmlp = dialog.getWindow().getAttributes();

 wmlp.gravity = Gravity.TOP | Gravity.LEFT;
 wmlp.x = 100;   //x position
 wmlp.y = 100;   //y position

 dialog.show();

这里x位置的值是从左到右的像素。对于y位置,值是从下到上。

票数 264
EN

Stack Overflow用户

发布于 2012-08-09 20:49:00

例如,如果您想要进一步向下移动进度对话框,并且不设置确切的像素位置,那么这就足够了:

代码语言:javascript
复制
progressDialog.getWindow().getAttributes().verticalMargin = 0.2F;
票数 16
EN

Stack Overflow用户

发布于 2013-11-02 20:22:23

为了使设置生效,我添加了以下代码

dialog.getWindow().setAttributes(wmlp);

在gypsicoder的答案中更改wmlp的值之后,或者wmlp的设置在我的测试中没有生效。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5469005

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档