Italian Chiacchiericci

LucaMs

Expert
Licensed User
Longtime User
Ho aggiunto l'animazione. Contento?
Sì, mi piace con l'animazione.

Dopo aver faticato tanto per tentare di mettere a posto il problema "CV non disponibili" (che, come sai, alla fine era un bug b4a che verrà corretto nella prossima versione e che si può aggirare con due click), mi ero messo anch'io a vedere di proporzionare al meglio possibile la label di "hint" rispetto alle dimensioni della EditText.
C'è anche da modificare, sempre proporzionalmente, il TextSize della label.

Fatto qualcosa ma ancora non mi soddisfa (devo vedere in giro, mi pare si possa ingrandire il testo alle massime dimensioni possibili rispetto all'altezza della label, tra poco cerco).

Mi piace la tua animazione, però, per cui, l'aggiungerò.

Alla tua, senza ancora aver guardato il codice, sfugge qualcosa; ad esempio, il panel dovrebbe essere trasparente, il colore dev'essere eventualmente impostato per la EditText.


[Tutto questo... per qualcosa che per il momento non penso di usare e mettendo in sospeso sia la faccenda A9 1 contro 1 - quindi sconvolgimento app e creazione server b4j - sia, soprattutto Penelope, che a quest'ora sarà scappata con il Re dei "P"roci... che era? Azz, non me ricordo! Mi vengono in mente un paio di nomi, ma non mi va di fare figuracce :p]


P.S. Invece era giusto; avevo in mente Antinoo ma anche Alcinoo... chi era quest'ultimo? Non me ricordo... Già, il padre di Nausicaa! Re dei Feaci.

Va beh, tra Odissea, Pinocchio, Bi..ia, Van..lo, ... personaggi di fantasia ne ho troppi in testa ;)
 
Last edited:

LucaMs

Expert
Licensed User
Longtime User
Mi piace la tua animazione, però, per cui, l'aggiungerò.
Però va rifatta, perché quando la label si ingrandisce non hai più la possibilità di vedere il cursore nella EditText (e probabilmente hai anche la difficoltà di restituire il focus alla EditText, toccandola).

Vedi quante magagne si scoprono per un sw semplice semplice, che in teoria dovrebbe essere scritto con poche righe di codice? Ok, l'hai fatto al volo, senza stare a pensarci troppo, ma in generale questa è una regola: anche tutto ciò che sembra semplice, realizzabile in poche ore o giorni, in realtà non lo è mai!
 

LucaMs

Expert
Licensed User
Longtime User
Non è perfetto.

Con EditText di 40dip o 45dip (Designer, AutoscaleAll), il testo è troppo grande e "sale" (sembra non più centrato verticalmente, cosa che è impostata di default).
Carino; ho provato ad azzerare il padding (gli spazi tra testo e bordi, eliminato tutti e 4) e...
scrivendo una "j" nella EditText, la "gambetta" addirittura deborda, sembra finire oltre il bordo della EditText (questo perché le EditText sono sempre più altre di quanto sembrano, come anche i button)
 

LucaMs

Expert
Licensed User
Longtime User
Non è perfetto.

Con EditText di 40dip o 45dip (Designer, AutoscaleAll), il testo è troppo grande e "sale" (sembra non più centrato verticalmente, cosa che è impostata di default).

Con piccole correzioni (di cui una piuttosto empirica HiddenLabelPart) così a me sembra funzionare bene.

B4X:
Sub Process_Globals
   Dim mStringUtils As StringUtils
End Sub

Sub SetTextSize(lbl As Label, txt As String)
   Dim dt As Float
   Dim limit = 0.5 As Float
   Dim h As Int
 
   Dim TopPadding As Int = getPaddingTop(lbl)
   Dim BottomPadding As Int = getPaddingBottom(lbl)
   Dim HiddenLabelPart As Int = lbl.Height * .15
   Dim TotalToExclude As Int = TopPadding + BottomPadding - HiddenLabelPart
 
   lbl.Text = txt
   lbl.TextSize = 72
   dt = lbl.TextSize
   h = mStringUtils.MeasureMultilineTextHeight(lbl, txt) + TotalToExclude
   Do While dt > limit Or h > lbl.Height
       dt = dt / 2
       h = mStringUtils.MeasureMultilineTextHeight(lbl, txt) + TotalToExclude
       If h > lbl.Height Then
           lbl.TextSize = lbl.TextSize - dt
       Else
           lbl.TextSize = lbl.TextSize + dt
       End If
   Loop
End Sub

'Gets the Top padding of the given view
Sub getPaddingTop(v As View) As Int
   Dim jo = v As JavaObject
   Return jo.RunMethod("getPaddingTop", Null)
End Sub

'Gets the Bottom padding of the given view
Sub getPaddingBottom(v As View) As Int
   Dim jo = v As JavaObject
   Return jo.RunMethod("getPaddingBottom", Null)
End Sub
 

LucaMs

Expert
Licensed User
Longtime User
Sprecato un sacco di tempo per questa cavolata che proprio non mi serve!

Scopo principale dimensionare la label-hint in maniera proporzionale rispetto alla EditText. Lo fa, ma il tutto era partito dal fatto che la view originale (di Erel-GitHub), inserita in un mio layout di prova, aveva la label troppo piccola; beh, anche con questa, se la view viene impostata sui 40-45 dip (poi scalati) la label è illegibile sul mio tablet.

Ha due bug:
1) malgrado abbia utilizzato l'auto scaling del textsize, che funziona benissimo nel progetto allegato qui) questo non viene assolutamente bene;
2) l'animazione della label-hint: quando compare, l'animazione dura quanto impostato (300 ms), quando deve scomparire, dura invece 0.
Per il punto 1) ho tentato di duplicare molto codice in base al fatto che la view sia una label o no ma nemmeno questo ha funzionato.

Di buono ha che ho aggiunto la possibilità di impostare, da Designer e da codice, la visibilità o meno dei suggerimenti della tastiera.

Infine, ho messo come rapporto tra label e edittext 35 a 65; anche questo si potrebbe mettere come proprietà della CV.

Nota che ho impostato il colore della Base a bianco soltanto per evidenziare il fatto che il testo non venga ridimensionato bene, questa riga va tolta (numero 92).
 

Attachments

  • FLHEditText.zip
    10 KB · Views: 211

Star-Dust

Expert
Licensed User
Longtime User
Sì, mi piace con l'animazione.

Dopo aver faticato tanto per tentare di mettere a posto il problema "CV non disponibili" (che, come sai, alla fine era un bug b4a che verrà corretto nella prossima versione e che si può aggirare con due click), mi ero messo anch'io a vedere di proporzionare al meglio possibile la label di "hint" rispetto alle dimensioni della EditText.
C'è anche da modificare, sempre proporzionalmente, il TextSize della label.

Fatto qualcosa ma ancora non mi soddisfa (devo vedere in giro, mi pare si possa ingrandire il testo alle massime dimensioni possibili rispetto all'altezza della label, tra poco cerco).

Mi piace la tua animazione, però, per cui, l'aggiungerò.

Alla tua, senza ancora aver guardato il codice, sfugge qualcosa; ad esempio, il panel dovrebbe essere trasparente, il colore dev'essere eventualmente impostato per la EditText.


[Tutto questo... per qualcosa che per il momento non penso di usare e mettendo in sospeso sia la faccenda A9 1 contro 1 - quindi sconvolgimento app e creazione server b4j - sia, soprattutto Penelope, che a quest'ora sarà scappata con il Re dei "P"roci... che era? Azz, non me ricordo! Mi vengono in mente un paio di nomi, ma non mi va di fare figuracce :p]


P.S. Invece era giusto; avevo in mente Antinoo ma anche Alcinoo... chi era quest'ultimo? Non me ricordo... Già, il padre di Nausicaa! Re dei Feaci.

Va beh, tra Odissea, Pinocchio, Bi..ia, Van..lo, ... personaggi di fantasia ne ho troppi in testa ;)
Le caratteristiche del panel e delle View possono essere modificate. Avrà visto che sono presenti getBase, getLabel e getEditText per consentire la personalizzazione delle view.
 

Star-Dust

Expert
Licensed User
Longtime User
Sprecato un sacco di tempo per questa cavolata che proprio non mi serve!

Scopo principale dimensionare la label-hint in maniera proporzionale rispetto alla EditText. Lo fa, ma il tutto era partito dal fatto che la view originale (di Erel-GitHub), inserita in un mio layout di prova, aveva la label troppo piccola; beh, anche con questa, se la view viene impostata sui 40-45 dip (poi scalati) la label è illegibile sul mio tablet.

Ha due bug:
1) malgrado abbia utilizzato l'auto scaling del textsize, che funziona benissimo nel progetto allegato qui) questo non viene assolutamente bene;
2) l'animazione della label-hint: quando compare, l'animazione dura quanto impostato (300 ms), quando deve scomparire, dura invece 0.
Per il punto 1) ho tentato di duplicare molto codice in base al fatto che la view sia una label o no ma nemmeno questo ha funzionato.

Di buono ha che ho aggiunto la possibilità di impostare, da Designer e da codice, la visibilità o meno dei suggerimenti della tastiera.

Infine, ho messo come rapporto tra label e edittext 35 a 65; anche questo si potrebbe mettere come proprietà della CV.

Nota che ho impostato il colore della Base a bianco soltanto per evidenziare il fatto che il testo non venga ridimensionato bene, questa riga va tolta (numero 92).
ho notato questo anche nell'animazione della mia ultima Library
Quando chiudo un Panel, soprattutto quando schiaccio il tasto KeyBack, l'animazione è estremamente veloce. Così ho deciso di crearmi l'animazione chiusura con il timer e funziona bene
 
Last edited:

LucaMs

Expert
Licensed User
Longtime User
E che mi dici del fatto che il ridimensionamento del testo non funziona, pur funzionando in un progetto "normale", ovvero non nella CV?

Se hai guardato il progetto, ho modificato quella parte, rispetto al progetto allegato al post nel forum di b4a, ma solo per cercare di farlo funzionare, senza esserci riuscito.
 

Star-Dust

Expert
Licensed User
Longtime User
Non conosco la CV, non saprei dirti cine ottiene il ridimensionamento
 

Star-Dust

Expert
Licensed User
Longtime User
Pensavo che tu ti riferissi alla Custom list View
Il ridimensionamento non funziona perché non l'avevo inserito però non è difficile da sviluppare, in un'altra libreria ci sono riuscito senza problemi

Bisogna creare un rapporto fra l'altezza della View e la TextSize
 

LucaMs

Expert
Licensed User
Longtime User
Pensavo che tu ti riferissi alla Custom list View
Il ridimensionamento non funziona perché non l'avevo inserito però non è difficile da sviluppare, in un'altra libreria ci sono riuscito senza problemi

Bisogna creare un rapporto fra l'altezza della View e la TextSize
L'ho inserito io, non mi stai seguendo.

Ho testato uno snippet di Klaus; non risultava perfetto e, almeno mi pare, l'ho migliorato e pubblicato.
Poi, però, inserendolo nella nostra CV (la CustomListView l'abbrevio con CLV), non funziona bene.
 

Star-Dust

Expert
Licensed User
Longtime User
Capito, non ho ancora visto il codice di Klaus, lo guardo subito
 

LucaMs

Expert
Licensed User
Longtime User
Dovresti confrontare il suo, quello corretto da me e poi la cv che ho allegato, in cui appunto l'ho inserito, modificato e non va bene.
Lo snippet di Klaus, a parte il piccolo difetto che mi pare abbia, va a modificare il TextSize della view che gli passi; questo va bene per la label hint, ma non per la EditText, perché di base deve essere vuota e deve poter modificare il TextSize dell'hint della EditText, che è poi è lo stesso della EditText.
Per questo aggiungo al volo una View e poi la tolgo, nella cv.
 

Star-Dust

Expert
Licensed User
Longtime User
Se hai visto il mio codice io non uso la hint di Edit text ma uso una Label, così si può gestire meglio l'animazione e le dimensioni
 

LucaMs

Expert
Licensed User
Longtime User
Se hai visto il mio codice io non uso la hint di Edit text ma uso una Label, così si può gestire meglio l'animazione e le dimensioni
Si ma ha il difetto che ti dicevo; va ad occupare lo spazio della EditText, per cui non si vede più il cursore e non gli si può passare il focus toccandola, in quanto tocchi la label (a meno che non gestisci anche questa cosa, al click sulla label imposti il focus sulla EditText da codice, ma il cursore comunque non sarà visibile).
 

Star-Dust

Expert
Licensed User
Longtime User
Nella mia non accade che viene coperto il cursore,
Credo che tu non hai provato la mia
 
Top