Italian lista scorrevole con alcuni dati evidenziati

Sabotto

Active Member
Licensed User
Un consiglio per un principiante: Vorrei realizzare unaa lista scorrevole dove per ogni riga poter formattare (con un grassetto, con un colore, con un riquadretto - vedi foto allegata -) uno (o piu) dei dati di quell riga.
Cosa mi consigliate? (scrollview, listview, customlistview..)??
Probabilmente mi direte customlistview, ma come potrei poi dare la formattazione ad ogni singolo dato?
Grazie in anticipo
esempio listbox.png
 

Sabotto

Active Member
Licensed User
Al momento ho usato questo codice, ma qualsiasi miglioramento e/o consiglio è ben accetto (vedi la parte per creare il bordino attorno alla label)

B4X:
Sub CreaRiga(Ruota As String, Estratti() As String, Width As Int, Height As Int) As Panel
   
    Dim p As B4XView = xui.CreatePanel("")
    p.SetLayoutAnimated(0, 0, 0, Width, Height)
   
    Dim lblCreata(6) As Label
   
    lblCreata(0).Initialize("")
    lblCreata(0).TextColor=Colors.Blue
    lblCreata(0).TextSize=10
    lblCreata(0).Text=Ruota
    p.AddView(lblCreata(0),20dip,0,100%x,100%y)
   
    Dim L As Int,i As Int
    For i = 0 To 4
        lblCreata(i).Initialize("pippo")
        lblCreata(i).TextColor=Colors.BlACK
        lblCreata(i).TextSize=10
        L=  140*i+350
        p.AddView(lblCreata(i),L,0,100%x,100%y)
       
        If EvidenziaNumero(I) Then '  evidenzianumero è un flag '
       
            'crea un rettanmgolino intorno alla label'
            lblCreata(i).Typeface=Typeface.DEFAULT_BOLD
            lblCreata(i).textColor=Colors.Red
            lblCreata(i).Text=" " & Estratti(i).SubString(1)
           
            Dim cv As Canvas
            cv.Initialize(lblCreata(I))
            Dim dstRect As Rect
           
            dstRect.Initialize(0,0,85, 70)
            cv.DrawRect(dstRect, Colors.blue, False, 2dip)     'Border color and width
        Else
            lblCreata(i).Text=" " & Estratti(i)
        End If
    Next
   
    Return p
End Sub

Ad esempio per la label chiedo: non posso impostarla direttamente con il bordo senza doverlo "disegnare" io?
 

Lello1964

Well-Known Member
Licensed User
Longtime User
Guarda questa libreria.

 

LucaMs

Expert
Licensed User
Longtime User
Lotto? 😁

Visto che sono gli estratti (e non dati calcolati) ti conviene usare un database (magari SQLite, locale) e una "View tabellare" / griglia, come ad esempio:
[B4X] B4XTable - Cross platform, sortable, searchable, customizable table

Comunque, qualunque (o quasi) View utilizzi (eventualmente xCustomListView) il testo puoi formattarlo come vuoi usando:
[B4X] BCTextEngine / BBCodeView - Text engine + BBCode parser + Rich Text View


P.S. Se, invece, se vinci il Jackpot del Superenalotto, ricordati degli "amici" 😆


[Sarà un caso che @Sabotto faccia rima con Lotto e Superenalotto?]
 
Last edited:

Sagenut

Expert
Licensed User
Longtime User
Per creare il bordo alle View (quelle che lo permettono)
B4X:
Sub sfondo (backcolor As Int, radius As Int, borderwidth As Int, bordercolor As Int) As ColorDrawable
    Dim cd As ColorDrawable
    cd.Initialize2(backcolor,radius,borderwidth,bordercolor)
    Return cd
End Sub

Label1.Background = sfondo(Colors.Blue, 8dip, 3dip, Colors.White)
I parametri da passare sono:
Colore di fondo della View
Raggio della curvatura degli angoli (se voluta, 0 per lasciare gli spigoli)
Spessore del bordo
Colore del Bordo

Se anche ti serve lo stesso bordo per tante view diverse devi creare questa Sub e richiamarla per ogni View che ti interessa.
Se crei un solo ColorDrawable ben definito, con l'idea di applicarlo poi ogni volta che ti serve, otterrai uno sgradevole risultato grafico:
alcune View verranno tagliate su un lato.
Misteri di Android. :p 😁
 
Last edited:

Sabotto

Active Member
Licensed User
in effetti è un programmino che serve a sorteggiare dei gironi e che usa i numeri estratti del lotto per stabilire lordine dei paetecipanti nei gironi. Quindi la rima la faremo. con sorteggiotto e piu di una birra non potrò offrire.. 😆
Tornando a noi guardero appena a torno a casa la libreria e farò delle prove con i codici suggeriti
Grazie, vi terrò aggiornati
.
 
Top