Italian activity.RemoveViewAt() ??

zenlab

Member
Licensed User
Longtime User
Ciao, in un activity carico il layout nel solito modo Activity.LoadLayout("nomeLayout") poi, in una determinata sub, carico un ulteriore Layout sempre con Activity.LoadLayout("nomeLayout2")
è possibile capire che Index ha il secondo Layout per andare a rimuoverlo in seguito e ritornare al layout originale?
Grazie 1000
 

Dey

Active Member
Licensed User
Longtime User
Ciao, in un activity carico il layout nel solito modo Activity.LoadLayout("nomeLayout") poi, in una determinata sub, carico un ulteriore Layout sempre con Activity.LoadLayout("nomeLayout2")
è possibile capire che Index ha il secondo Layout per andare a rimuoverlo in seguito e ritornare al layout originale?
Grazie 1000

Ciao
Utilizza un panel per caricare il Layout
puoi mettere sul Tag es. "layout_01"
per rimuoverlo cerchi nel Tag "layout_01" trovato lo rimuovi
 

drgottjr

Expert
Licensed User
Longtime User
oppure:

B4X:
activity.loadlayout("1")

e piu tardi
B4X:
activity.loadlayout("2")

e piu tardi ancora
B4X:
activity.loadlayout("1")

basta con sapere il nome del layout. non e necessario rimuovere prima. si scrive sopra
 

udg

Expert
Licensed User
Longtime User
Non ho provato, quindi potrei sbagliare, ma temo che il suggerimento di @drgottjr comporti la somma dei tre layout piuttosto che l'ultimo che soppianti i primi due.
Per ottenere quest'ultimo effetto, bisognerebbe effettuare un Activity.RemoveAllViews prima di ricaricare Layout1; in tal modo sarebbe l'unico presente.
 

LucaMs

Expert
Licensed User
Longtime User
Comunque, un modo semplice, benché non elegantissimo, è quello di creare una variabile stringa a livello di Process_Globals che contenga il nome del layout "corrente", da impostare ogni volta che carichi uno dei layout.
 

drgottjr

Expert
Licensed User
Longtime User

non lo credo. credo che con activity.loadLayout("2"), layout "2" è il layout. non c'è un altro layout aspettando "sotto". quando fai activity.loadLayout("1"), adesso layout "1" è il layout. non si accumulano. allora, se le dimensione dei layout sono distinte, sarebbe conveniente da invalidare l'activity (o rimuovere il view). con un panel, è possibile che le cose siano differenti.

dov'è erel quando abbiamo bisogno di lui?
 

LucaMs

Expert
Licensed User
Longtime User
non lo credo. credo che con activity.loadLayout("2"), layout "2" è il layout. non c'è un altro layout aspettando "sotto".
Credici ;), fai una semplice prova. Se hai un lay1 con due 2 button, ad esempio, e un lay2 con due label, se li carichi consecutivamente avrai le 4 view nell'Activity.

dov'è erel quando abbiamo bisogno di lui?
Eh, in questi giorni si "vede" poco; ma certo non possiamo lamentarci, è sempre molto presente.
 

drgottjr

Expert
Licensed User
Longtime User
quando vado a letto a mezzanotte, l'ho visto rispondendo tutti i post della "prossima" mattinata (le 8, ora sua). o mai dorme (come io, vampiro che sono).
ho fatto la piccola prova. mi piace! (o devo dire piuttosto👍?) però qualcosa non quadra; se si vedono tutte le view di 2 layout allo stesso tempo né l'uno né l'altro è in cima. erel, svegliati!
 

udg

Expert
Licensed User
Longtime User
Infatti non è una tecnica da utiizzare;
Ci sono circostanze in cui può essere utile. Ad esempio, stabilisci un layout che costituisce un frame da ripetersi su tutte le activity della tua app (non so, header e footer con relativi elementi tipo label di copyright e simili). A quel punto, in ogni Activity carichi prima il layout base e poi quello specifico dell'Activity (e non hai avuto la necessità di ripetere nel layout della seconda activity tutti gli elementi che avevi già incluso nel layout base).
E' solo un modo diverso di giungere alla stessa conclusione.
 

LucaMs

Expert
Licensed User
Longtime User
Ci sono circostanze in cui può essere utile. Ad esempio, stabilisci un layout che costituisce un frame da ripetersi su tutte le activity della tua app (non so, header e footer con relativi elementi tipo label di copyright e simili). A quel punto, in ogni Activity carichi prima il layout base e poi quello specifico dell'Activity (e non hai avuto la necessità di ripetere nel layout della seconda activity tutti gli elementi che avevi già incluso nel layout base).
E' solo un modo diverso di giungere alla stessa conclusione.
Faccio qualcosa di simile per via del fatto che uso gli smart-banner, che hanno dimensioni variabili (altezza).
Il modo è semplice: carico l'intero layout dell'activity in un pannello contenitore, in modo che il layout si adatti a questo, grazie ad ancoraggi e script.
Poi, ridimensiono e risposiziono questo panel a seconda dell'altezza del banner e solo in seguito carico l'intero layout-activity.

Si potrebbe pensare che la mia risposta c'entri come il cavolo a merenda (perché, non si può mangiare il cavolo a merenda? 😄) ma intendo dire che non è necessario fare ciò che dici, anche se ha senso, rispetto all'argomento di cui stiamo parlando; sarebbe sufficiente creare un layout-standard come l'esempio che hai fatto, tipo header, footer e tutto ciò che dev'essere replicato su N activity e che contenga anche un panel-contenitore centrale, nel quale caricare il layout specifico per la determinata app.

Spero di essermi spiegato bene, anche se non ne sono certissimo, sono sveglio da 10 minuti 😄.

Se non fosse chiaro o comunque aveste domande od osservazioni... non fatelo 😄. Scherzo, ovviamente, tanto so già che non c'è alcunché da obbiettare, c'è solo da mettere 8 "Like" 😄
 

udg

Expert
Licensed User
Longtime User
Era esattamente ciò che intendevo. Un altro utilizzo è se il layout base occupa solo una porzione dello schermo e quello aggiuntivo la parte restante.
Ad esempio il 50% superiore al layout base e il 50% inferiore a quello specifico dell'Activity in esecuzione.
E, combinando le due idee:
layout1 come header nel 20% superiore
layout2 come body dal 20% al 90%
layout3 come footer nel 10% inferiore
layout1 e layout3 comuni a tutte le Activity, layout2 diverso da activity ad activity. In sostanza, ognuno ha il suo posto e header e footer risultano identici sulle varie activity.
 

LucaMs

Expert
Licensed User
Longtime User
Forse potremmo sintetizzare dicendo che la parte grafica specifica dell'activity potremmo chiamarla Body, come con le email ed altro e che per questa, secondo me, convenga lasciare come "place-holder" (in un belllissimo italiano: segnaposto!) un semplice Panel, nel quale caricare il layout separato e specifico per quell'app.
 

LordZenzo

Well-Known Member
Licensed User
Longtime User
come al solito arrivo tardi
loadLayout non è caricare un oggetto, ma semplicemente un modo per inserire N view nella Activity
il layout non è un oggetto ma una lista, vedila come una porzione di codice dove per ogni view c'è la sua initialize, e la modifica dei parametri come li hai impostati tu
 
Top