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). PopupWindow a una coordinata specifica senza vista di ancoraggio
risposta
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.
Grazie amico, questo è eccellente per aiutare – bebosh
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
in grado di postare immagini a causa del nuovo stato utente, si prega di fare riferimento al link Marci Căşvan –
cercherò di implementare questo. Grazie per la risposta. – androidu
- 1. Android - PopupWindow sopra una vista specifica
- 2. GLSurfaceView in a PopupWindow
- 3. Android PopupWindow showAsDropDown() non funziona correttamente
- 4. Come mostrare il PopupWindow sempre sopra il pulsante (vista)?
- 5. Specifica di una vista ES OpenGL non a schermo intero
- 6. Android: ridisegno di una vista specifica all'interno di un layout
- 7. Qual è il modo corretto di animare una vista da una coordinata all'altra?
- 8. Scorrimento di una vista testo su una linea specifica
- 9. come ottenere una vista da una coordinata di evento in Android?
- 10. Unjar a una destinazione specifica
- 11. aggiunta di una vista personalizzata a una vista di avviso
- 12. Android Modeless Popupwindow
- 13. PopupWindow sopra tastiera virtuale
- 14. Ricerca del colore dei pixel in una coordinata specifica da un sampler2D utilizzando GLSL
- 15. PopupWindow animazione non funzionante
- 16. Collegamento a una condivisione file tramite un tag di ancoraggio
- 17. PopupWindow fuori schermo quando la dimensione non è specificata
- 18. Rails di aggiornamento a una versione specifica
- 19. Android: imposta lo stato attivo di accessibilità TalkBack a una vista specifica
- 20. Regex abbinare una linea senza una specifica parola
- 21. Codeigniter PHP - caricamento di una vista in un punto di ancoraggio
- 22. Come aggiungere una barra di navigazione a una vista senza il controller di navigazione
- 23. iOS - Capovolgi solo l'animazione per una vista specifica
- 24. Estensione di un segmento di linea a una distanza specifica
- 25. Aggiungere una vista del controller di visualizzazione figlio a una sottoview del controllore della vista padre
- 26. Calcolo del riquadro di delimitazione a una certa distanza da una coordinata lat/long in Java
- 27. Ricerca di qualsiasi elemento con prima coordinata specifica nel set <pair>>
- 28. Collegamento di ancoraggio a Firefox: config?
- 29. Passaggio da una vista elenco a una vista griglia
- 30. Marcatori multipli sulla stessa coordinata
come si mostra una finestra popup? – pskink
utilizzando showAtLocation (Visualizza genitore, gravity int, int xOffset, int yOffset); – androidu
questo dovrebbe funzionare, forse i tuoi offset sono sbagliati? – pskink