Italian B4A: Come centrare ImgView dentro panel?

Elric

Well-Known Member
Licensed User
Esco dall'oblio in cui sono caduto.
anche io avevo pensato una soluzione come quella di @Filippo, e sinceramente mi stavo chiedendo se non c'è un sistema per farlo tutto con un ciclo FOR e gli indici

..... cioè: c'è un sistema per accedere alle view tramite il loro nome ??
ad esempio, in VB.NET io scrivo:
B4X:
Me.Controls("Imageview4").Left = .........

Si era parlato tempo fa di creare una List e mettere le view dentro a questa list e poi così poterla ciclare, ma come facciamo a mettere le view dentro qui senza dover scrivere 20 righe di codice ??
Mi pare che i miei tentativi con le traduzioni (basate sul metodo di @Filippo) avesse portato a usare i cicli For each per ciascuna view. Forse era qui: https://www.b4x.com/android/forum/t...stema-migliore-secondo-voi.130662/post-825755

Ritorno nell'oblio.
 

Filippo

Expert
Licensed User
Longtime User
grazie @Filippo provo anche la tua soluzione..
Se vuoi puoi anche provare questa soluzione, se non vuoi scrivere nel layout tutte quelle rige di codice, anche se io penso che non siano veramente molte.
1699964058531.png
 

Attachments

  • CentraPanelView2.zip
    28.8 KB · Views: 116

XorAndOr

Active Member
Licensed User
Longtime User
Ciao Filippo e grazie
Ho provato a scrivere come mi hai detto il codice nel designer (anche se sono solo 20 view, non è un problema)
funziona bene.
Adesso ho provato l'esempio che hai allegato e non so se è il mio telefono (devo riprovare)
Praticamente l'altezza delle icone sono tagliate.....esempio l'icona della nota musicale la gambetta è tagliata
ti allego uno screen
imgconfronto.png

Sul mio android TV le icone tagliate si notano di piu'
tvsmart.png
 
Last edited:

Filippo

Expert
Licensed User
Longtime User
Adesso ho provato l'esempio che hai allegato e non so se è il mio telefono (devo riprovare)
Praticamente l'altezza delle icone sono tagliate.....esempio l'icona della nota musicale la gambetta è tagliata
Usa questo modificato Sub:
B4X:
Sub AddRiga(item As Int)
    Dim itemHeight As Int
    Dim p As B4XView = xui.CreatePanel("")
    p.SetLayoutAnimated(0, 0, 0, PnlConView.Width, 70dip)
    p.LoadLayout("layRiga")

    itemHeight = p.GetView(0).Width
    
    For i = 0 To 3
        p.GetView(i).As(ImageView).Bitmap = LoadBitmap(File.DirAssets, lstBMP.Get(count))
        count = count + 1
    Next
    
    p.Height = itemHeight
    PnlConView.AddView(p, 0, item * itemHeight, PnlConView.Width, itemHeight)
End Sub
 

XorAndOr

Active Member
Licensed User
Longtime User
Usa questo modificato
Ok provo subito...

Però a questo punto ho una domanda;

PnlConView tutto a sinistra
AutoScaleAll
PnlConView.HorizontalCenter = 50%x

Con solo queste tre righe le view si adattano perfettamente
sia con telefono, tablet, emulatore, android tv

Mi piacerebbe capire la differenza tra scrivere codice in mainpage o designer oppure lasciare
solo quelle 3 righe, poche ma buone!
 

LucaMs

Expert
Licensed User
Longtime User
La differenza principale è che PnlConView, disancorato dai lati, sarà più o meno distante dai bordi, a seconda del disposivito.

E' un po' come guardare un vecchio film in formato 4:3 su un "moderno" TV, che ha formato 16:9, vedrai barre nere ai lati.

Per questo mi saltano i nervi quando penso ai produttori di schermi che non li standardizzano come quelli dei TV!
 

Filippo

Expert
Licensed User
Longtime User
Mi piacerebbe capire la differenza tra scrivere codice in mainpage o designer oppure lasciare
solo quelle 3 righe, poche ma buone!
Dipende sempre da quello che bisogna fare.
Alcune volte bisogna scrivere del codice nel mainpage, ma per il 99,9% è meglio usare lo script del designer.
 
Top