如何将自定义对话框定位在特定坐标?

Posted

技术标签:

【中文标题】如何将自定义对话框定位在特定坐标?【英文标题】:How Do I Position Custom Dialog at specific Coordinate? 【发布时间】:2013-05-07 12:12:02 【问题描述】:

我是 android 开发的菜鸟,我正在尝试弄清楚如何在视图中的特定坐标处显示 NewQuickAction3D 弹出对话框。我正在将弹出窗口与this 教程集成。本质上,我想使用弹出对话框来显示用户触摸的数据,而不是使用“infoview”在画布上绘画目前,弹出窗口显示在我将其锚定到的视图的顶部和中心。我怎样才能让它显示一个特定的坐标?非常感谢任何帮助。

我的代码

public void updateMsg(String t_info, float t_x, float t_y, int t_c)
     infoView.updateInfo(t_info, t_x, t_y, t_c); //Infoview paints to on a specific coordinate
     quickAction.show(infoView); //How do I use the t_x & t_y coordinates here instead of just anchoring infoview

编辑

public void updateMsg(String t_info, float t_x, float t_y, int t_c)
     infoView.updateInfo(t_info, t_x, t_y, t_c);
     WindowManager.LayoutParams wmlp = quickAction.getWindow().getAttributes(); //Error here getting window attributes
     wmlp.gravity = Gravity.TOP | Gravity.LEFT;
         wmlp.x = 100;   //x position
         wmlp.y = 100;   //y position
     quickAction.show(infoView);

【问题讨论】:

【参考方案1】:

覆盖视图的 onTouch()

AlertDialog dialog;

    @Override
    public boolean onTouchEvent(MotionEvent event) 
    float x = event.getX();
    float y = event.getY();

    switch (event.getAction()) 
        case MotionEvent.ACTION_DOWN:

            showDialog();  // display dialog
            break;
        case MotionEvent.ACTION_MOVE:
            if(dialog!=null)
              dialog.dismiss(); 
             // do something
            break;
        case MotionEvent.ACTION_UP:
            // do somethig
            break;
    
    return true;
     
     public void showDialog()
      

             AlertDialog.Builder builder = new AlertDialog.Builder(FingerPaintActivity.this);
             dialog = builder.create();
             dialog.setTitle("my dialog");
             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();
      

即使绘制用户触摸屏幕,也会显示对话框。所以在移动中关闭对话框。

【讨论】:

感谢您的回复。我对你的回答有些问题。 NewQuickAction 是一个自定义对话框,因此它不允许我获取窗口属性。有什么想法吗? 使您的自定义视图成为活动类的内部类

以上是关于如何将自定义对话框定位在特定坐标?的主要内容,如果未能解决你的问题,请参考以下文章

如何将自定义 WebPartPage 部署到特定目标站点 (Web)

将自定义小部件添加到 QStackedWidget

将自定义位置点添加到 MKMapView

Django 如何将自定义变量传递给上下文以在自定义管理模板中使用?

将自定义字体加载到网站中[重复]

如何将自定义 WCF 协议通道添加到现有绑定