Italian Android - Autoscale All

cirollo

Active Member
Licensed User
Longtime User
ciao a tutti,

mi spiegate come funziona questa cosa? ho dei layout ottimizzati per tablet 1280x800.
Oggi un cliente è passato a tablet 1900x1200 ma alcune cose non vanno bene.

in particolare, le scrollview non vengono ridimensionate.

Premesso che io ho l'istruzione ....addview(myview,......) e li ci sono i valori di top e left, width ed height, come devo impostare questo comando per fare in modo che vengano scalate automaticamente?

grz, ciro
 

sirjo66

Well-Known Member
Licensed User
Longtime User
devi usare la percentuale
mostraci una riga di codice nel quale posizioni il "myview"
 

LordZenzo

Well-Known Member
Licensed User
Longtime User
devi riscrivere tutte le dimensioni usando latuaview.setlayount(left%x,top%y,width%x,heigth%y)
e devi farlo per ogni view
in oltre i testi non vengono ridimensionati, per i testi io uso una sub che mi calcola il textsize in base a quanto deve essere alto il testo stesso

B4X:
Sub SLHtext(H As Int,V As View) As Int
    Dim c As Canvas
    c.Initialize(V)
    Dim h1 As Float
    Dim t As String
    t  =  "Tg"
    h1  =  c.MeasureStringHeight(t, Typeface.DEFAULT, 10)/10
    h = h/h1
    Return h
End Sub
 

LucaMs

Expert
Licensed User
Longtime User
Nella signature di LordZenzo:

Il GRAZIE o Like non e` un Obbligo, ma un piacere reciproco

Come "reciproco"? E' una tale fatica clickare su "Like" ! :p

(uhm... mi sa che non sono esattamente in tema; va beh, per una volta...! :D)
 

cirollo

Active Member
Licensed User
Longtime User
devi usare la percentuale
mostraci una riga di codice nel quale posizioni il "myview"

è evidente che va sistemato, cmq è solo sulle scrollview il problema, tutto il resto è a sinistra quindi il left è rispettato

B4X:
Sub Activity_Create(FirstTime As Boolean)
   'Do not forget to load the layout file created with the visual designer. For example:
   'Activity.LoadLayout("Layout1")
   Activity.LoadLayout("Storico")
   LstStorico.Initialize("LstStorico")
   LstStorico.TwoLinesLayout.ItemHeight = 60dip '70dip
   LstStorico.TwoLinesLayout.Label.TextSize = 15
   LstStorico.TwoLinesLayout.Label.TextColor = Colors.Black
   LstStorico.FastScrollEnabled = True
   LstStorico.Color = Colors.White
   LstStorico.ScrollingBackgroundColor = Colors.White
   Activity.Color = Colors.White
   Activity.AddView(LstStorico, 400, 100, 860, 230)
 

LucaMs

Expert
Licensed User
Longtime User
Intanto LstStorico non è una ScrollView ma una ListView (che sarebbe sempre meglio sostituire con una CustomListView).
Poi l'aggiungi da codice usando AddView ma passi dei numeri che non sono dip, dovresti mettere 400dip, 100dip...
Ma, come ti hanno già consigliato, affinché sia proporzionato su tutti gli schermi (benché... va beh, omissis), dovresti usare delle percentuali di X e Y,
come AddView(LstStorico, 20%x, 10%y...)
 

cirollo

Active Member
Licensed User
Longtime User
Intanto LstStorico non è una ScrollView ma una ListView (che sarebbe sempre meglio sostituire con una CustomListView).
Poi l'aggiungi da codice usando AddView ma passi dei numeri che non sono dip, dovresti mettere 400dip, 100dip...
Ma, come ti hanno già consigliato, affinché sia proporzionato su tutti gli schermi (benché... va beh, omissis), dovresti usare delle percentuali di X e Y,
come AddView(LstStorico, 20%x, 10%y...)

si infatti sto provando cosi è sto trovando le proporzioni giuste, vedo però che gli altri controlli (textbox, label, panel) li ridimensiona in automatico
 
Top