Ho un file di layout xml principale con due visualizzazioni testuali A/B e una vista C. Rispetto a due altri file di layout xml option1
e option2
. E 'possibile caricare option1
o option2
in fase di esecuzione tramite Java in C? In tal caso, quale funzione devo usare?Layout Android che sostituisce una vista con un'altra vista in fase di esecuzione
146
A
risposta
319
È possibile sostituire qualsiasi vista in qualsiasi momento.
int optionId = someExpression ? R.layout.option1 : R.layout.option2;
View C = findViewById(R.id.C);
ViewGroup parent = (ViewGroup) C.getParent();
int index = parent.indexOfChild(C);
parent.removeView(C);
C = getLayoutInflater().inflate(optionId, parent, false);
parent.addView(C, index);
Se non si desidera sostituire già esistente View, ma scegliere tra opzione1/opzione2 in fase di inizializzazione, allora si potrebbe fare questo più facile: impostare android:id
per il layout genitore e poi:
ViewGroup parent = (ViewGroup) findViewById(R.id.parent);
View C = getLayoutInflater().inflate(optionId, parent, false);
parent.addView(C, index);
È necessario impostare "indice" sul valore corretto in base alla struttura delle viste. Si potrebbe anche usare un ViewStub: aggiungi la tua vista C come ViewStub e poi:
ViewStub C = (ViewStub) findViewById(R.id.C);
C.setLayoutResource(optionId);
C.inflate();
In questo modo non dovrete preoccuparvi di sopra "indice" valore se si vuole ristrutturare il layout XML.
36
E se lo si fa molto spesso, è possibile utilizzare uno ViewSwitcher o uno ViewFlipper per facilitare la sostituzione delle viste.
Problemi correlati
- 1. Nuovo per Android - Disegnare una vista in fase di esecuzione
- 2. @ Ajax.ActionLink che non sostituisce la vista parziale
- 3. Imposta il colore di sfondo di una vista Layout su una sfumatura in Android?
- 4. Come aggiungere un controllo pulsante a una vista xml android in fase di runtime?
- 5. vogliono fare alcuni punti di vista invisibile in fase di esecuzione in applicazione Android
- 6. Android: ridisegno di una vista specifica all'interno di un layout
- 7. Android: vista personalizzata basata sul layout: come?
- 8. Android: aggiunta di una vista al layout che determina il layout davanti a ActionBar
- 9. Scegliere dinamicamente una vista in fase di esecuzione con Ember + Handlebars
- 10. Come centrare una vista all'interno di un layout Android?
- 11. Android - ellissi di layout con la vista allineata a destra
- 12. Android: vista multipla bambini per visualizzazione personalizzata con layout esistente
- 13. Inclinazione una vista testo in Android
- 14. Android: ottieni l'altezza di una vista prima che venga disegnata.
- 15. aggiornare una vista Android
- 16. Animate Layout automatico vista posteriore con UIKitDynamics
- 17. Vista personalizzata nel layout xml
- 18. Vista visiva vs Vista di layout sui dispositivi mobili
- 19. Modifica file di layout in una vista in Yii2
- 20. Differenza tra una vista AppCompat e una normale vista Android
- 21. Android: creazione di una vista scorrevole scorrevole
- 22. Android: imposta una vista vuota a una vista elenco
- 23. Android: ottieni l'area visibile di una vista?
- 24. In che modo findViewById inizializza una vista
- 25. Rails: rendering di una vista (non parziale) da una vista
- 26. vista Android confronto tra due punti di vista per l'uguaglianza
- 27. Android: è possibile fare una copia di una vista?
- 28. Layout Android: elemento di posizione sotto la vista più bassa
- 29. Come sovrascrivere una vista personalizzata (vista surreale)
- 30. Estensioni Android Kotlin: come ottenere un riferimento a una vista in un layout che viene incluso in un altro layout?
È necessario rimuovere il frammento o rimuovere anche il frammento? –
@KarlMorrison Questa domanda ha quasi 4 anni e non ha nulla a che fare con i frammenti. Suggerisco di presentare una nuova domanda e/o dare un'occhiata a 'android.app.FragmentTransaction' ed è il metodo' replace() '. – lupz
Peccato che la tua risposta sia troppo complessa - nei commenti - per i programmatori Android principianti :-( –