Italian scorrimento destra-sinistra

sirjo66

Well-Known Member
Licensed User
Longtime User
Ciao a tutti,
devo creare 40 "schermate" (praticamente uguali) e devo dare all'utente la possibilità di passare da una all'altra scorrendo con il dito destra-sinistra.

Prima domanda:
Mi sto guardando intorno ma non so bene quale oggetto utilizzare.
Su una mia vecchia applicazione avevo usato il StdViewPager ma ho trovato anche il TabStripViewPager su https://www.b4x.com/android/forum/threads/tabstripviewpager-better-viewpager.63975/
Sinceramente però non ho bisogno che appaiono i TAB in alto, dato che essendo 40 schermate non credo che in alto ci stiano i 40 TAB, per cui pensavo di mettere la Label con scritto "1/40" e poi quando l'utente scorre aggiorno la label.
Quale controllo mi consigliate ?

Seconda domanda:
Ipotizziamo di utilizzare StdViewPager, come creo i 40 layout che devo caricare nei 40 panel relativi ??
Se ho un solo layout che ho preparato, posso caricarlo su tutti i 40 panel ??
E come faccio poi ad accedere agli oggetti del layout (Label, EditText, Button eccetera) ??
Se carico lo stesso layout su tutti e 40 i panel avrò (ad esempio) la Label1 che è presente su tutti i panel, come faccio ad accedere alla Label1 del panel numero 5 ???

Grazie per l'aiuto
Sergio
 

LucaMs

Expert
Licensed User
Longtime User
Seconda domanda:
Questa è una bella domanda; non appena mi sveglierò, ci penserò :D (che orari assurdi faccio, maremma indecente).

A naso (e che naso, modestamente :D), nei vari eventi legati alle view ricevi l'oggetto Sender, che "punta" esattamente alla view coinvolta, a presceindere dal nome.

Puoi prendere spunto dalla CustomListView.
 

LucaMs

Expert
Licensed User
Longtime User
Ovviamente adesso devo scoprire come inizializzare (intendo dire "riempire") le varie view in un TabStripViewPager.

Ad esempio, se ho una ImageView nell'unico layout, come carico da codice una bitmap diversa in ogni pannello?

Sto facendo una provola e momentaneamente (spero) non vedo soluzione, non c'è modo di ottenere il contenuto di ogni pagina, ovvero non c'è una List di oggetti Page.
 

LucaMs

Expert
Licensed User
Longtime User
Ovviamente adesso devo scoprire come inizializzare (intendo dire "riempire") le varie view in un TabStripViewPager.

Ad esempio, se ho una ImageView nell'unico layout, come carico da codice una bitmap diversa in ogni pannello?

Sto facendo una provola e momentaneamente (spero) non vedo soluzione, non c'è modo di ottenere il contenuto di ogni pagina, ovvero non c'è una List di oggetti Page.
Questo codice dovrebbe aiutare:
https://www.b4x.com/android/forum/t...ger-better-viewpager.63975/page-2#post-408977
devo ancora leggerlo bene.


[P.S. non m pare; perlomeno sembra ottenere tutte le view contenute nel TabStripViewPager, non quelle di una sola Page]
 
Last edited:

sirjo66

Well-Known Member
Licensed User
Longtime User
prima domanda risolta, grazie mille, ora provo la seconda !!

Edit: risolto anche la seconda domanda, grazie mille
 
Last edited:

sirjo66

Well-Known Member
Licensed User
Longtime User
quando carico un layout assegno ai vari oggetti le proprietà che mi servono e poi carico gli altri layout
B4X:
For x = 1 To 40
    TabStrip1.LoadLayout("mioLayout", x)
    Label1.Text = "Testo n. " & x
    Button1.Text = "Bottone n. " & x
Next

.... e via così
 

LucaMs

Expert
Licensed User
Longtime User
Ok. Il "guaio" è che non puoi modificarli successivamente.

Proprietà e metodi sono davvero troooppo scarsi:
upload_2017-12-27_15-43-38.png
 

sirjo66

Well-Known Member
Licensed User
Longtime User
per fortuna non devo modificarli successivamente, devo solo mostrarli
 

Star-Dust

Expert
Licensed User
Longtime User
Ciao a tutti,
devo creare 40 "schermate" (praticamente uguali) e devo dare all'utente la possibilità di passare da una all'altra scorrendo con il dito destra-sinistra.

Prima domanda:
Mi sto guardando intorno ma non so bene quale oggetto utilizzare.
Su una mia vecchia applicazione avevo usato il StdViewPager ma ho trovato anche il TabStripViewPager su https://www.b4x.com/android/forum/threads/tabstripviewpager-better-viewpager.63975/
Sinceramente però non ho bisogno che appaiono i TAB in alto, dato che essendo 40 schermate non credo che in alto ci stiano i 40 TAB, per cui pensavo di mettere la Label con scritto "1/40" e poi quando l'utente scorre aggiorno la label.
Quale controllo mi consigliate ?

Seconda domanda:
Ipotizziamo di utilizzare StdViewPager, come creo i 40 layout che devo caricare nei 40 panel relativi ??
Se ho un solo layout che ho preparato, posso caricarlo su tutti i 40 panel ??
E come faccio poi ad accedere agli oggetti del layout (Label, EditText, Button eccetera) ??
Se carico lo stesso layout su tutti e 40 i panel avrò (ad esempio) la Label1 che è presente su tutti i panel, come faccio ad accedere alla Label1 del panel numero 5 ???

Grazie per l'aiuto
Sergio
1. Userei il mio PanelNavigator :D non mettendo le icone in basso
https://www.b4x.com/android/forum/threads/sd-panel-extra.83673/#content

2. Io lo farei da codice. Creerei Una Sub che crea da codice gli oggetti e li agganci al Panel che passi come parametro, e di volta in volta é uno dei 40.
P.S. Da tempo ho in mente una libreria che replichi un pannello con gli oggetti che contiene, ma mai realizzata. :confused:
 
Last edited:

LucaMs

Expert
Licensed User
Longtime User
Ok. Il "guaio" è che non puoi modificarli successivamente.

Proprietà e metodi sono davvero troooppo scarsi:
View attachment 63206
1) hai un unico layout; mettici un panel di fondo (pnlPage);
2) crei una mapPages nella Globals:
B4X:
Sub Globals
    Private TabStrip1 As TabStrip
  
    Private pnlPage As Panel
    Private mapPages As Map
3) quando carichi TabStrip1:
B4X:
For i = 0 To 9
    TabStrip1.LoadLayout("layPage", "PAGE " & (i + 1))
    mapPages.Put(i, pnlPage)
Next

A quel punto puoi gestire tutto, anche modificare i contenuti delle view, usando la map (mapPages).
 
Last edited:

sirjo66

Well-Known Member
Licensed User
Longtime User
PERFETTO !!!
Tutto ok con il TabStripViewPager, eccovi uno screenshot di come è venuta la mia app:
 

Attachments

  • Screenshot_2018-01-06-00-46-47.png
    Screenshot_2018-01-06-00-46-47.png
    57.6 KB · Views: 218
Top