Autore Topic: Posizionamento dinamico delle View sul layout  (Letto 1068 volte)

Offline Lore_Android

  • Nuovo arrivato
  • *
  • Post: 11
  • Respect: 0
    • Mostra profilo
    • Personal site web
  • Dispositivo Android:
    Galaxy S2
  • Play Store ID:
    LORENZO DANESE
Posizionamento dinamico delle View sul layout
« il: 08 Marzo 2012, 16:21:35 CET »
0
Ciao ragazzi,
ho la necessità di disporre sul layout una serie di View nel caso specifico TextView però non in modo ordinato ma con una posizione random, ovviamente vorrei che non si sovrapponessero.
Vi ringrazio in anticipo ;)
 

Offline Trigun

  • Utente normale
  • ***
  • Post: 183
  • Respect: +4
    • Mostra profilo
Re:Posizionamento dinamico delle View sul layout
« Risposta #1 il: 08 Marzo 2012, 17:03:56 CET »
0
crei la textview e poi R textview vuote di dimensione fissa e in questo modo puoi fare il random

Offline Lore_Android

  • Nuovo arrivato
  • *
  • Post: 11
  • Respect: 0
    • Mostra profilo
    • Personal site web
  • Dispositivo Android:
    Galaxy S2
  • Play Store ID:
    LORENZO DANESE
Re:Posizionamento dinamico delle View sul layout
« Risposta #2 il: 09 Marzo 2012, 10:09:40 CET »
0
La disposizione non è un problema ma si sovrappongono e a questo non riesco a trovare una soluzione.
Grazie

Offline Trigun

  • Utente normale
  • ***
  • Post: 183
  • Respect: +4
    • Mostra profilo
R: Posizionamento dinamico delle View sul layout
« Risposta #3 il: 09 Marzo 2012, 10:45:44 CET »
0
Beh se usi un linear layout non è possibile

Inviato dal mio GT-I9100 usando Tapatalk

Offline Lore_Android

  • Nuovo arrivato
  • *
  • Post: 11
  • Respect: 0
    • Mostra profilo
    • Personal site web
  • Dispositivo Android:
    Galaxy S2
  • Play Store ID:
    LORENZO DANESE
Re:Posizionamento dinamico delle View sul layout
« Risposta #4 il: 09 Marzo 2012, 11:01:13 CET »
0
Ragazzi vi sto chiedendo un aiuto / suggerimento su come fare... Sto utilizzando un FrameLayout proprio apposta.

Offline Trigun

  • Utente normale
  • ***
  • Post: 183
  • Respect: +4
    • Mostra profilo
R: Posizionamento dinamico delle View sul layout
« Risposta #5 il: 09 Marzo 2012, 11:02:28 CET »
0
Beh comincia a postare il codice... Io un metodo per farlo te l'ho detto quale può essere

Inviato dal mio GT-I9100 usando Tapatalk

Offline Lore_Android

  • Nuovo arrivato
  • *
  • Post: 11
  • Respect: 0
    • Mostra profilo
    • Personal site web
  • Dispositivo Android:
    Galaxy S2
  • Play Store ID:
    LORENZO DANESE
Re:Posizionamento dinamico delle View sul layout
« Risposta #6 il: 09 Marzo 2012, 11:16:58 CET »
0
Codice (Java): [Seleziona]
                        RelativeLayout layout = (RelativeLayout) findViewById(R.id.RelativeLayout1);

                        for(int i=0; i<lista.size();i++)
                        {
                                TextView textView = new TextView(getApplicationContext());
                                textView.setText(lista.get(i));
                                textView.setTextSize(20);
                                textView.setLines(1);
                               
                                int[] paddingArray = random(layout.getWidth(), layout.getHeight());
                                textView.setPadding(paddingArray[0], paddingArray[1], 0, 0);
                                layout.addView(textView);
                               
                               
                        }
                       
                private int[] random(int width, int height)
                {
                        Random random = new Random();
                        int left = random.nextInt(width-110);
                        int top = random.nextInt(height-20);
                        Log.i("LOG","P.left:"+left+" P.top:"+top);
                        int[] randomArray = {left,top};
                        return randomArray;
                }

Offline Trigun

  • Utente normale
  • ***
  • Post: 183
  • Respect: +4
    • Mostra profilo
Re:Posizionamento dinamico delle View sul layout
« Risposta #7 il: 09 Marzo 2012, 11:32:29 CET »
0
quella parte di codice è nell'oncreate suppongo vero?
perchè il getwidth e getheight restituiscono 0 fino a quando non sono stati effettivamente creati e visualizzati...
quindi utilizzarli come punti di riferimento è impossibile


per questo motivo io farei una cosa del genere

creo una funzione (la chiamo space) che crea un layout e gli da una dimensione fissa
poi farei dentro un linearlayout
Codice (Java): [Seleziona]
                        for(int i=0; i<lista.size();i++)
                        {
                                TextView textView = new TextView(getApplicationContext());
                                textView.setText(lista.get(i));
                                textView.setTextSize(20);
                                textView.setLines(1);
                               
                               
                                layout.addView(textView);

****
lancia RANDOM volte la funzione space
****
                               
                               
                        }
in questo modo ti mette una cosa del genere
textview "space" "space" space textview "space" "space" textview "space" textview "space" "space" space space
ecc ecc
il problema è che avresti tutto su una linea ... quindi poi dovresti gestire lo spazio verticale (o orizzontale in base al primo linearlayout che hai usato) in un altro modo

Offline Trigun

  • Utente normale
  • ***
  • Post: 183
  • Respect: +4
    • Mostra profilo
R: Posizionamento dinamico delle View sul layout
« Risposta #8 il: 09 Marzo 2012, 11:45:37 CET »
0
In realtà potresti usare anche il relative layout... Ma in ogni caso dovresti impostare la posizione degli elementi... Su ogni elemento dovresti usare qualcosa come "affianco all'elemento Y" non ricordo come si definisce a memoria...

Inviato dal mio GT-I9100 usando Tapatalk

Offline Lore_Android

  • Nuovo arrivato
  • *
  • Post: 11
  • Respect: 0
    • Mostra profilo
    • Personal site web
  • Dispositivo Android:
    Galaxy S2
  • Play Store ID:
    LORENZO DANESE
Re:Posizionamento dinamico delle View sul layout
« Risposta #9 il: 09 Marzo 2012, 11:50:09 CET »
0
Io utilizzo un Relative Layout ed il codice che ho postato funziona,
le view vengono generate in posizioni random sul layout l'unico problema che vorrei risolvere riguarda la sovrapposizione.
Come potrei gestire la posizione delle View che inserisco in base alle view già presenti sul layout?

Offline Trigun

  • Utente normale
  • ***
  • Post: 183
  • Respect: +4
    • Mostra profilo
R: Posizionamento dinamico delle View sul layout
« Risposta #10 il: 09 Marzo 2012, 11:51:08 CET »
0
Ah io avevo capito che fossero tipo tutte sullo stesso punto

Inviato dal mio GT-I9100 usando Tapatalk

Offline Trigun

  • Utente normale
  • ***
  • Post: 183
  • Respect: +4
    • Mostra profilo
Re:Posizionamento dinamico delle View sul layout
« Risposta #11 il: 09 Marzo 2012, 11:59:13 CET »
0
supponendo che le textview sono 110*20 potresti fare che la funzione random ti controlla la posizione delle textview precedenti (quando ti da 1 posizione la salva in 1 lista) e ti sceglie la posizione successiva in modo che non sia nei 110*20 dei random precedenti... e ti prende un nuovo random se è dentro un'altra posizione
il problema è che ti potrebbe andare in loop il programma perchè non trova la posizione di un elemento (ad es è finito lo spazio libero)

Offline Lore_Android

  • Nuovo arrivato
  • *
  • Post: 11
  • Respect: 0
    • Mostra profilo
    • Personal site web
  • Dispositivo Android:
    Galaxy S2
  • Play Store ID:
    LORENZO DANESE
Re:Posizionamento dinamico delle View sul layout
« Risposta #12 il: 09 Marzo 2012, 12:10:53 CET »
0
La prima soluzione che mi viene in mente è quella di memorizzare la posizione in un array, per ogni textView e generale una posizione che non rientri in quelle coordinate per la view successiva.
Ma credo sia un metodo rozzo e non efficiente,
attendo qualche risposta illuminatoria da qualcuno che ha già avuto esperienza con problemi simili.

Offline Trigun

  • Utente normale
  • ***
  • Post: 183
  • Respect: +4
    • Mostra profilo
Re:Posizionamento dinamico delle View sul layout
« Risposta #13 il: 09 Marzo 2012, 12:51:24 CET »
0
e credo sia anche l'unica... perchè ammesso che esista una funzione nativa che ti possa far rilevare se 2 view sono sovrapposte il modo con cui generi la posizione delle view non te lo fa usare... poichè tu crei una view gigante e ci metti un bordo random su questa...
in questo modo non puoi sapere se l'altra view si va a sovrapporre alla scritta o al bordo