Italian cambiare colore di un testo

Sberla

Active Member
Licensed User
Longtime User
Salve ragazzi voglio cambiare il colore di un testo e poi inserirlo in una ListView. Ho creato prima una label e poi la inserisco in una ListView

B4X:
Dim pippo As label
pippo.Initialize("pippo")
pippo.TextColor=Colors.Red
pippo.Text="pluto"

Listview.AddSingleLine(pippo.text)

Però il testo mi resta di colore nero. Come mai?
 

Sberla

Active Member
Licensed User
Longtime User
Ciao Sberla
addsingleline ti scrive il valore dell'oggetto e non l'oggetto
per cambiare il colore della test in una list fai cosi
lstview.SingleLineLayout.Label.TextColor = colors.red
ciaoo
Mamo

Si però siccome voglio inserire il testo usando la classe "Flexible Table" non posso farlo.

https://www.b4x.com/android/forum/threads/class-flexible-table.30649/

Ti spiego usando questa classe quando scrivo la riga voglio fare il un asterisco * di colore rosso e il resto della riga di colore nero.
Quindi stavo pensando di mettere tutto in una label e poi passarlo alla funzione che scrive la riga, però lo vedo sempre nero.
 

Sberla

Active Member
Licensed User
Longtime User
Mi sa che puoi decidere un colore per tutto il testo. La mia intenzione era quella di creare un testo già formattato e poi passarglielo. Non posso farlo?
 

udg

Expert
Licensed User
Longtime User
Ciao.
Temo che indipendentemente da cosa fai prima di passare il testo alla ListView, quest'ultima utilizza il suo layout che, tra l'altro, è uguale per tutti gli elementi della LV stessa.
Maggiore libertà l'hai con la CustomListView ma non so se ti valga la pena.
Una possibilità, un po' forzata, potrebbe essere quella di utilizzare la LV nella modalità "due righe + bitmap". Nel tuo caso usi come bitmap l'asterisco colorato e magari setti nulla la seconda riga se non ti serve.
 

Sberla

Active Member
Licensed User
Longtime User
Si in pratica voglio come riga della tabella es. "* testo", tutta la scritta nera e l'asterisco di colore rosso
 

MarcoRome

Expert
Licensed User
Longtime User
Prova a modificare questo codice....

B4X:
Sub Process_Globals
    'These global variables will be declared once when the application starts.
    'These variables can be accessed from all modules.
 
End Sub
 
Sub Globals
    'These global variables will be redeclared each time the activity is created.
    'These variables can only be accessed from this module.
Dim aScroll As ScrollView
Dim scrollPanel As Panel
Type labelsXYpos(xpos As Int,ypos As Int)
End Sub
 
Sub Activity_Create(FirstTime As Boolean)
 
Dim actHeight As Int, actWidth As Int
Dim curcol As Int,currow As Int
Dim cols As Int ,rows As Int
Dim selCol As Int, seltext As String
Dim colWidth As Int, rowHeight As Int
Dim newcolor As Int
Dim rnNumber As Int
 
Activity.LoadLayout ("1")
actHeight=Activity.Height
actWidth=Activity.Width
aScroll.Initialize (Activity.Height)
scrollPanel=aScroll.Panel
Activity.AddView (aScroll,0,0,actWidth,actHeight)
 
cols=2:rows=10
colWidth=actWidth/cols
rowHeight=actHeight/rows
selCol=1
seltext="test"
newcolor=Colors.Red
 
For currow=0 To rows-1
 
For curcol=0 To cols-1
 
Dim txt As String
Dim l As Label
Dim xy As labelsXYpos
 
txt=currow & "," & curcol
 
If curcol=selCol Then
rnNumber=Rnd(0,2)
If rnNumber=0 Then txt=seltext
End If
 
l.Initialize ("label")
l.Text =txt
l.Gravity =Gravity.CENTER
xy.Initialize
xy.xpos =curcol
xy.ypos =currow
l.Tag =xy
scrollPanel.AddView (l,curcol*colWidth,currow*rowHeight,colWidth,rowHeight)
 
If curcol=selCol AND txt=seltext Then
Dim l2 As Label
l2=scrollPanel.GetView (currow*cols)
l2.TextColor =newcolor
End If
 
Next
 
Next
 
End Sub
 
Sub Activity_Resume
 
End Sub
 
Sub Activity_Pause (UserClosed As Boolean)
 
End Sub
 
 
Sub label_click
Dim l As Label
Dim xy As labelsXYpos
l=Sender
xy=l.Tag
ToastMessageShow("Label at X=" & xy.xpos & ", Y=" & xy.ypos & " =" & l.Text,False)
End Sub

Il risultato è il seguente:
Immagine.png


vedi qui

Ciao
 
Top