2013-05-29 16 views
5

Ho un ImageView personalizzato e in OnDraw ho aggiunto alcuni overlay bitmap. Posso catturare l'evento click per qualsiasi overlay utilizzando l'evento di tipo action up nel callback OnTouchEvent. Il fatto è che per visualizzare una finestra popup devo fornire un punto di vista per la finestra popup da mostrare, ma sto usando bitmap come ancoraggi non una vista particolare, quindi sono bloccato. Non riesco a trovare alcun sollution sul web per quanto riguarda questo problema. Passare la ImageView genitore e aggiungere gli offset x-y della sovrapposizione (con Gravity.NO_GRAVITY) non produce il risultato desiderato (anche la freccia della finestra non punta correttamente). enter image description herePopupWindow a una coordinata specifica senza vista di ancoraggio

+0

come si mostra una finestra popup? – pskink

+0

utilizzando showAtLocation (Visualizza genitore, gravity int, int xOffset, int yOffset); – androidu

+0

questo dovrebbe funzionare, forse i tuoi offset sono sbagliati? – pskink

risposta

6

Uso PopupWindow.showAtLocation

Il problema è che x/y params in tale funzione è compensato rispetto alla finestra, a cui appartiene vista ancoraggio. Puoi vederlo chiaramente dalla sorgente della funzione, dove non viene utilizzato nulla da 'parent' ad eccezione del suo token finestra.

public void showAtLocation(View parent, int gravity, int x, int y) { 
    showAtLocation(parent.getWindowToken(), gravity, x, y); 
} 

Così, per rendere buoni gli offset, è necessario determinare la posizione dell'ancora rispetto alla sua finestra.

Per questo, utilizzare

Rect rc = new Rect(); 
View.getWindowVisibleDisplayFrame(rc); 
int[] xy = new int[2]; 
View.getLocationInWindow(xy); 
rc.offset(xy[0], xy[1]); 

ora avete

inx x = rc.left, y = rc.top; 

Questo è il punto di sinistra-top del vostro ImageView angolo rispetto alla sua finestra.

Infine mostra PopupWindow nella posizione relativa a questo punto e dovrebbe essere visualizzato correttamente sopra il tuo ImageView.

+0

Grazie amico, questo è eccellente per aiutare – bebosh

2

Ti riferisci al tipo di vista in basso a destra ... Ti suggerisco di seguire il link sottostante e implementare lo stesso nel tuo caso pure.Se trovato difficile postare un tuo commento e ti ricontatterò .. MAPViewBallons

+0

in grado di postare immagini a causa del nuovo stato utente, si prega di fare riferimento al link Marci Căşvan –

+0

cercherò di implementare questo. Grazie per la risposta. – androidu

Problemi correlati