【问题标题】:Show a small popup at the point where user clicks on the graph (achartengine)在用户点击图表的位置显示一个小弹出窗口(achartengine)
【发布时间】:2014-04-19 13:55:20
【问题描述】:

我想在用户点击图表时显示一个小弹出窗口。我已阅读问题的答案

Showing popup on clicking a point in graph AChartEngine

它建议吐司作为答案,但我希望用户在弹出窗口中的两个选项之间进行选择。我 尝试使用 alertdialog 甚至创建了一个自定义对话框,但它们覆盖了整个屏幕区域,而我只想在用户点击图表的地方弹出一个小窗口。

这是我获取 x,y 坐标的 onotuch 监听器

     mChart.setOnTouchListener(new OnTouchListener() {
                if(event.getAction() == MotionEvent.ACTION_UP)
                              {                     
                    int xd= (int) event.getX();
                    int yd = (int) event.getY();
                                       }

重新定位对话框的代码

    AlertDialog alertDialog = builder.create();
    alertDialog.show();
    WindowManager.LayoutParams lp = new WindowManager.LayoutParams(); 
    lp.x= xd;
    lp.y= yd;
    alertDialog.getWindow().setAttributes(lp);                      

【问题讨论】:

  • 弹出两个小图片来参考你的两个选项怎么样
  • 谢谢,但不,我不认为显示图像会起作用我希望显示特定选项
  • 因为您使用自定义对话框,所以您应该能够像普通文本一样进行填充。参考这篇文章,希望它会帮助stackoverflow.com/questions/1967085/…

标签: android dialog popup android-alertdialog achartengine


【解决方案1】:

这是调整对话框大小的代码

dialog.show();

Display display =((WindowManager)getSystemService(context.WINDOW_SERVICE)).getDefaultDisplay();
int width = display.getWidth();
int height=display.getHeight();

Log.v("width", width+"");
dialog.getWindow().setLayout((6*width)/7,(4*height)/5);

更新

MotionEvent 类有方法 getX() 来获取与该视图对应的 X 触摸点,以及 getRawX() 来获取与屏幕对应的 X 触摸点。

所以要获得与父节点对应的 X 触点,您可以通过简单的计算得到:

 view.getLeft() + motionEvent.getX()

getLeft() 返回此视图相对于其父视图的左位置

【讨论】:

  • 感谢我能够调整它的大小。我什至尝试使用从触摸事件中获得的屏幕坐标重新定位它,但对话框显示的距离我单击图形的位置很远。我将在我的问题中添加代码。
  • 可能是因为您触摸时对话框是从左上角绘制的。当你触摸时,对话的中心就应该在场。尝试将您的对话框的宽度 n 高度除以 2,我们使用相同的技巧将图像放置在我们触摸的屏幕上
  • 我希望左上角出现在我触摸的位置。在我尝试在某些地方除以二的情况下,对话框出现在我单击的位置的右​​侧,有时在中间我点击的位置。我会添加图片
  • lp.x = xd - (alertDialog.getWidth()/2); lp.y = yd - (alertDialog.getHeight()/2); - 希望不工作
  • alertDialog.getWidth() 和 alertDialog.getHeight() 给出错误,所以我使用 100 代替它们,因为我已将警报对话框的宽度和高度明确设置为 200,但仍然没有成功。另外我想问一下 event.getX() 是否给出了相对于整个屏幕或事件发生的视图的 x 坐标,因为这可能是对话框定位不正确的原因
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-04-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-05-20
相关资源
最近更新 更多