2013-05-07 1 views
4

Я новичок в разработке 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 

EDIT

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

Override onTouch() вашего зрения

диалога

AlertDialog;

@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 - это настраиваемый диалог, поэтому он не позволит мне получить атрибуты окна. Есть предположения? –

+0

Сделайте свой пользовательский вид внутреннего класса вашего класса активности – Raghunandan