2013-05-07 89 views
4

我是android開發的noob,我想弄清楚如何在視圖中的特定座標處顯示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); 
} 

回答

9

覆蓋你的觀點

AlertDialog對話框的onTouch();

@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(); 
    } 

即使要繪製用戶觸摸屏幕,也會顯示對話框。因此在移動中關閉對話框。

+0

感謝您的回覆。我的答案有些麻煩。 NewQuickAction是一個自定義對話框,所以它不會讓我獲得窗口屬性。有什麼想法嗎? – 2013-05-07 12:49:27

+0

使您的自定義視圖活動類的內部類 – Raghunandan 2013-05-07 12:51:52