Autore Topic: aprire ballon alla selezione di un item di una ListView  (Letto 297 volte)

Offline giuseppesorce

  • Utente junior
  • **
  • Post: 92
  • Respect: +6
    • Google+
    • warpmobile_it
    • Mostra profilo
  • Dispositivo Android:
    Nexus 6,Nexus 5,Nexus 4, Galaxy Nexus, Nexus s, Nexus One,Htc Wildfire S, Nexus 7... etc
  • Sistema operativo:
    Ubuntu 14.04
aprire ballon alla selezione di un item di una ListView
« il: 02 Settembre 2014, 08:59:58 CEST »
0
Salve dovrei aprire un ballon una tip al click di un item di una ListView.

Ecco l' esempio che vi propongo

https://www.dropbox.com/s/2e9p2i53wlofgm0/context.png?dl=0

Il layout è dentro altri view etc... potrei creare la view all' interno dell' Item e metterlo o sotto o sopra.. il problema è capire dove mettere il tip... perchè se l' utente scrolla pagina e seleziona un quadrato che è sotto.. non posso aprirlo sotto ma devo per forza aprirlo sopra...

The code is joy and passion but it has a high degree of suffering

Offline giuseppesorce

  • Utente junior
  • **
  • Post: 92
  • Respect: +6
    • Google+
    • warpmobile_it
    • Mostra profilo
  • Dispositivo Android:
    Nexus 6,Nexus 5,Nexus 4, Galaxy Nexus, Nexus s, Nexus One,Htc Wildfire S, Nexus 7... etc
  • Sistema operativo:
    Ubuntu 14.04
Re:aprire ballon alla selezione di un item di una ListView
« Risposta #1 il: 03 Settembre 2014, 14:43:51 CEST »
0
Ho ricreato il mio problema in un piccolo esempio.

Eccolo.

https://www.dropbox.com/s/n45dkrj8sd5cqih/BallonOnListView.zip?dl=0

Se qualcuno mi da una mano... L' idea era eliminare la ListView e con addView "incollare" tutto in runtime.. avevo pensato anche AbosoluteLayout ma è deprecated.

The code is joy and passion but it has a high degree of suffering

Offline Ricky`

  • Amministratore
  • Utente storico
  • *****
  • Post: 3489
  • Respect: +506
    • Github
    • Google+
    • rciovati
    • Mostra profilo
Re:aprire ballon alla selezione di un item di una ListView
« Risposta #2 il: 04 Settembre 2014, 21:04:49 CEST »
0
Ma hai provato ad utilizzare una PopupWindow?

Offline giuseppesorce

  • Utente junior
  • **
  • Post: 92
  • Respect: +6
    • Google+
    • warpmobile_it
    • Mostra profilo
  • Dispositivo Android:
    Nexus 6,Nexus 5,Nexus 4, Galaxy Nexus, Nexus s, Nexus One,Htc Wildfire S, Nexus 7... etc
  • Sistema operativo:
    Ubuntu 14.04
Re:aprire ballon alla selezione di un item di una ListView
« Risposta #3 il: 05 Settembre 2014, 00:02:28 CEST »
0
Codice: [Seleziona]
Si si provato. Comunque ho risolto. Domani metto il codice che ho usato. Alla fine 3 righe di codice :))
[hr][size=1][color=red][b]Post unito: [time]1409925250[/time][/b][/color][/size][hr]
Allora la soluzione che ho trovato è tremendamente semplice  :)

Una cosa che non sapevo è che Android ha delle API che ti restituiscono le coordinate di una View in funzione del display

Il mio scenario è

fatherContainer (RelativeLayout)

    ->ListView (sta dentro fatherContainer ma ha dei margini)
     -> Item della lista
              ->square, ogni item può contenere più square

Ora il codice

//creo due array
int[] locationSquare = new int[2];
int[] locationContainer = new int[2];

//memorizzo le coordinate x,y del rettangolo cliccato e del fatherContainer
// se il container fosse stato senza margini rispetto al fragment non avrei preso le coordinate x,y
square.getLocationOnScreen(location);
fatherContainer.getLocationOnScreen(locationContainer);

//recupero le posizione y delle Views
int yContainer= locationContainer[1];
int ySquare= locationSquare[1];

//creo il ballon
ballon= new BallonTip(getContext());



RelativeLayout.LayoutParams bparams = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, heightBallon);
int yPosition=yContainer+ySquare+altezzaSquare;
bparams.topMargin= yPosition;
fatherContainer.addView(ballon, bparams);

Ho semplificato il codice ma penso sia comprensibile...
La funzione getLocationOnScreen è stata una manna dal cielo.. praticamente è come avere un Canvas ma con i layout :)

Grazie a tutti per l' attenzione
« Ultima modifica: 05 Settembre 2014, 15:54:10 CEST da giuseppesorce, Reason: Merged DoublePost »
The code is joy and passion but it has a high degree of suffering