Italian TAB + ScrollView [RISOLTO]

Roberto Tsolakis

Member
Licensed User
Longtime User
Sto facendo un applicazione in cui ncessito di avere delle TAB con dentro delle scrollview da popolare con ulteriori oggetti ...
Guardando un pò in giro ho trovato esempi dove si inserisce il tutto in activity , ma appena metto scrollview.panel ... l'oggeto (in questo caso una listview) appare in activity, bloccando per giunta l'accesso alle altre TAB.

Spero di essere stato abbastanza chiaro :)

B4X:
Sub Activity_Create(FirstTime As Boolean)
LogColor("TAB_Main : Activity_Create",Colors.blue)
    'Do not forget to load the layout file created with the visual designer. For example:
Activity.LoadLayout("TAB_Main")
Label1.SetLayout(0%x,0%y,100%x,5%y)   
Label1.text="Testo"
TabHost1.SetLayout(0%x,5%y,100%x,95%y)
TabHost1.AddTab("Vano","Pagina_1")
TabHost1.AddTab("Man. Lignei","Pagina_2")
TabHost1.AddTab("Man. Metallici","Pagina_3")
TabHost1.AddTab("Lista Voaci","Lista_TAB")
End Sub


Sub Activity_Resume
LogColor("TAB_Main : Activity_Resume",Colors.blue)   
Visualizza_Pannello
End Sub


Sub Activity_Pause (UserClosed As Boolean)
LogColor("TAB_Main : Activity_Pause",Colors.blue)
End Sub


Sub Visualizza_Pannello
LogColor("TAB_Main : Visualizza_Pannello",Colors.blue)   
    Button1.RemoveView
    ListView1.Removeview
    ScrollView1.RemoveView
   
    ' POPOLA ACTIVITY
    ScrollView1.Initialize(1000dip)
    Activity.AddView(ScrollView1,0%x,0%y,100%y,90%y)
   
    ScrollView1_Vano.Panel.Height=200%x
   
    Activity.AddView(Button1,0%x,90%y,50%x,10%y) : Button1.Text = "Inserisci in Lista TAB"
    ' POPOLA LISTVIEW

      ScrollView1.Panel.AddView(ListView1,0%x,0%y,100%x,20%y)
    ListView1.Color = Colors.Blue   
   
End Sub
 

LucaMs

Expert
Licensed User
Longtime User
Spero di essere stato abbastanza chiaro
Mica tanto :D

Ho sempre odiato le Tab perché c'erano problemi nel ricavare le view contenute, quindi le ho abbandonate subito.

Cerco di "interpretare" il codice (ma vedere il layout e l'app in funzione faciliterebbe le cose).

TabHost1.SetLayout(0%x,5%y,100%x,95%y)
In questo modo TabHost1 occupa quasi interamente lo schermo.

Praticamente altrettanto fa poi la ScrollView1:
Activity.AddView(ScrollView1,0%x,0%y,100%y,90%y)

Non volevi mettere la ScrollView1 in un Tab (la stai aggiungendo all'Activity)?
 

Roberto Tsolakis

Member
Licensed User
Longtime User
Mica tanto :D

Ho sempre odiato le Tab perché c'erano problemi nel ricavare le view contenute, quindi le ho abbandonate subito.

Cerco di "interpretare" il codice (ma vedere il layout e l'app in funzione faciliterebbe le cose).


In questo modo TabHost1 occupa quasi interamente lo schermo.

Praticamente altrettanto fa poi la ScrollView1:


Non volevi mettere la ScrollView1 in un Tab (la stai aggiungendo all'Activity)?
Forse con l'ultima frase mi hai aperto gli occhi ... stasera quando arrivo a casa ci provo.
Cmq la logica sarebbe di mettere una scrollview con tutti gli oggetti in un panel nella Tab ..

Grazie genietto
 

Roberto Tsolakis

Member
Licensed User
Longtime User
Cmq un'altRa alternativa alle Tab ... button in una horizontalscrollview

É che le Tab sembrano più eleganti :)
 

LucaMs

Expert
Licensed User
Longtime User
Grazie genietto
"Cretinetti" sarebbe più adatto :D

Cmq un'altRa alternativa alle Tab
Per ora non mi sono interessato alla creazione di app con quello stile (benché mi siano sempre piaciute).

Direi di provare questa, sperando che non ci siano gli stessi problemi nel gestire le view inserite nelle Tab.


Ovviamente, invece di impegnarmi sulla mia app, adesso mi è venuta la curiosità di provare quella libreria e smanettare, quindi ci perderò un po' di tempo :D (anche da questo si capisce che "cretinetti" sarebbe più adatto :p)
 

LucaMs

Expert
Licensed User
Longtime User
Direi di provare questa, sperando che non ci siano gli stessi problemi nel gestire le view inserite nelle Tab.
Alla prima occhiata mi sembra un po' scarsa in quanto a proprietà.
Ha il vantaggio di poter usare il Designer per creare il contenuto di ogni Tab; in compenso, non puoi farlo tramite codice.

Diciamo che se crei n Tab, conviene creare un panel di base per ciascuna e nel codice usare un array (o Map o List) che "contenga" tutti i panel, in modo da poterli poi gestire nell'unico evento, PageSelected.

Alternative:
https://www.b4x.com/android/forum/threads/stdactionbar-another-actionbar-library.36786/#content

https://www.b4x.com/android/forum/threads/ahviewpager-library-sliding-panels-now-perfect.14165/
 

Roberto Tsolakis

Member
Licensed User
Longtime User
Infatti ho disegnato tutto con il desiner ... tramite codice diventava poco elegante, anche se alla fine uso i removeview.
Ormai ho preso dimestichezza anche con le list ... anzi direi che le list sono l'esempio più simile alle array non indicizzate del VB.

Non ho ancora guardato le MAP, ma superato questo scoglio dello scrollview nelle tab ... mi ci applico.
 

Roberto Tsolakis

Member
Licensed User
Longtime User
Cosi funziona ... ovviamente accanto ad ogni oggetto metto un riferimento alla pagina tipo : Label1_P1 o Label2_P2

B4X:
Sub Visualizza_Pannello
LogColor("AM_TAB_Main : Visualizza_Pannello",Colors.blue)   
Button1.RemoveView
ListView1.Removeview
ScrollView1.RemoveView
' POPOLA ACTIVITY
ScrollView1.Initialize(1000dip)
Panel1.AddView(ScrollView10%x,0%y,100%y,90%y)
ScrollView1.Panel.Height=200%x
Panel1.AddView(Button1,0%x,90%y,50%x,10%y) : Button1.Text = "Inserisci"
' POPOLA LISTVIEW
ScrollView1.Panel.AddView(ListView1,0%x,0%y,70%x,20%y)
ListView1.Color = Colors.Blue   
ListView1.SingleLineLayout.Label.Color=Colors.Yellow
ListView1.AddSingleLine("Linea 1")
ListView1.AddSingleLine("Linea 2")
ListView1.AddSingleLine("Linea 3")
ListView1.AddSingleLine("Linea 4i")
End Sub
 

LucaMs

Expert
Licensed User
Longtime User
Infatti ho disegnato tutto con il desiner
In questo caso, se usi esclusivamente il Designer, quella libreria mi sembra l'ideale. Inoltre, non ricordo, ma non credo, che la view TabHost consenta di scorrere i tab, questa (e le altre indicate, mi sembra) sì.


Ormai ho preso dimestichezza anche con le list ... anzi direi che le list sono l'esempio più simile alle array non indicizzate del VB.

Non ho ancora guardato le MAP, ma superato questo scoglio dello scrollview nelle tab ... mi ci applico.
Sì, puoi usare le List un po' come gli Array ma visto che gli Array ci sono puoi usare gli Array come... Array :D
Le Map sono più "potenti"; la prima cosa che mi viene in mente, come differenza rispetto alle List, è che come indice puoi usare qualunque tipo di oggetto, mentre con le List devi usare degli Int.
Ad esempio, se tu dovessi memorizzare un elenco telefonico, postresti usare come indice:
Dim Indice As String = Cognome & Nome
sia per scrivere che per leggere l'elenco.

Erel, in un suo esempio, ha usato dei Timer come indice!


Cosi funziona
... e se un cosa funziona, perché cambiarla?! Bene.
 
Top