Italian Visualizzazione scorretta di un panel

AlpVir

Well-Known Member
Licensed User
Longtime User
Ho diversi panel inseriti in uno scrollview:
B4X:
scrollview.Initialize (1000dip)
   Activity.AddView (scrollview,0,60dip,100%x,100%y)
   scrollview.Panel.Height = 1000dip
   scrollview.Panel.Width  = 100%x
Il panel incriminato è quello "MODIFICA PERCORSO IMMAGINI"
B4X:
scrollview.Panel.AddView (panel5,4dip,337dip,100%x-8dip,245dip)
Il risultato è soddisfacente ed è quello visualizzato nel primo screenshot, con i vari panel con i bordi arrotondati e di colore grigio.
Però, scrollando verticalmente in su di una quantità (apparentemente) superiore ai 60dip (che è - guarda caso - la coordinata Y del bordo superiore dello scrollview) il panel in questione si modifica assumento un aspetto non soddisfacente (vedi "Dopo.jpg"). Il panel più in basso ("PROCEDI") resta immutato e così quelli successivi ancora più in basso.
E' un antipatico effetto a cui vorrei ovviare. L'unico modo che ho trovato è quello di inserire un timer ed ogni secondo correggere la visualizzazione di panel5. Ma è un trucco molto sporco; mi piacerebbe risalire all'origine del malfunzionamento e rimediarvi, se possibile.
B4X:
Sub Timer1_Tick
    '  per correggere il panel 5 che cambia scrollandolo; funziona !
    Dim cd              As ColorDrawable
    cd.Initialize(Colors.RGB (192,192,192),6dip) 
    panel5.Background  = cd
    panel5.setlayout(4dip,337dip,100%x-8dip,245dip)
End Sub

Grazie per l'attenzione.
 

Attachments

  • Prima.jpg
    Prima.jpg
    335.1 KB · Views: 280
  • Dopo.jpg
    Dopo.jpg
    312.3 KB · Views: 256

LucaMs

Expert
Licensed User
Longtime User
Non dovrebbero essere necessari interventi strani, dovrebbe funzionare tutto correttamente.
Fai qualcosa in particolare su quel Panel?

Se vuoi, puoi pubblicare il progetto o quella parte in uno nuovo.
 

AlpVir

Well-Known Member
Licensed User
Longtime User
@LordZenzo: il problema dovrebbe essere evidente guardando l'immagine "Dopo.jpg". Un pannello (solo uno) ha i bordi non uguali a prima.
Nel tentativo di capire cosa succede ho creato un nuovo progetto estraendo dal progetto originario il codice che disegna i pannelli e lo scrollview. Risultato: la visualizzazione è assolutamente corretta mentre invece lo stesso identico codice, inserito nel progetto originario, causa i problemi di visualizzazione lamentati.
LucaMs ha ragione: dovrebbe funzionare tutto correttamente; solo che non lo fa.
Nelle mie prove ho eliminato qualsiasi label o button inserito all'interno di tutti i pannelli, senza aver alcun miglioramento.
Come ho già scritto ho risolto il problema con un trucco sporco (il timer) ma la cosa non mi soddisfa.
 

AlpVir

Well-Known Member
Licensed User
Longtime User
Il codice è identico, compreso #Region Activity Attributes.
In sintesi ho il progetto originario A composto dalle 2 activity main e manutenzione. E' manutenzione che ha i problemi. La lancio con un StartActivity(manutenzione).
Ho creato un progetto B composto dalle activity main e manut. Il codice di manut è prelevato da manutenzione, eliminando tutto il superfluo. Funziona perfettamente.

Ho poi inserito nel progetto A l'activity manut e l'ho lanciata da main con uno StartActivity(manut) invece di StartActivity(manutenzione). Identici problemi di visualizzazione.
Sembra quasi di rivedere i problemi (nel VB6) di disegno su una Picture Box che è in parte esterna alla finestra visibile (non so se son stato chiaro)
 

AlpVir

Well-Known Member
Licensed User
Longtime User
Anche i file Manifest sono identici, creati con un bel copia e incolla, quindi non ci sono dubbi).
Per evitare di diventare matto ho eliminato tutti i panel ridisegnando così l'interfaccia; ne ho anche guadagnato - forse - in leggibilità.
Insistendo sarei forse riuscito a trovare la soluzione dell'inghippo tuttavia ho preferito lasciar perdere, per non trovarmi in futuro alle prese con altri problemi.
Tuttavia il mistero - almeno per me - permane, ma ho rinunciato a approfondire l'argomento.
 
Top