Tengo un archivo de distribución de xml principal con dos textviews A/B y una vista C. Tengo otros dos archivos de diseño xml option1
y option2
. ¿Es posible cargar option1
o option2
en tiempo de ejecución a través de Java en C? Si es así, ¿qué función debo usar?Diseño de Android reemplazando una vista con otra vista en tiempo de ejecución
146
A
Respuesta
319
Puede reemplazar cualquier vista en cualquier 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);
Si no desea reemplazar ya Ver existente, sino elegir entre option1/opcion2 en tiempo de inicialización, entonces se podría hacer esto más fácil: juego de android:id
para la disposición de los padres y luego:
ViewGroup parent = (ViewGroup) findViewById(R.id.parent);
View C = getLayoutInflater().inflate(optionId, parent, false);
parent.addView(C, index);
Deberá establecer el "índice" en el valor correcto según la estructura de las vistas. También es posible usar un ViewStub: añada su vista como C y luego ViewStub:
ViewStub C = (ViewStub) findViewById(R.id.C);
C.setLayoutResource(optionId);
C.inflate();
De esa manera usted no tendrá que preocuparse por "índice" por encima del valor si tendrá que reestructurar su diseño XML.
36
Y si lo hace muy a menudo, puede usar ViewSwitcher o ViewFlipper para facilitar la sustitución de la vista.
Cuestiones relacionadas
- 1. Incrustar una vista web en otra vista
- 2. Agregar diseño como una vista en Android
- 3. Diseño relativo de Android alignCenter desde otra vista
- 4. Django, mostrando una vista en otra vista?
- 5. ¿Cómo agregar un control de botón a una vista xml de Android en tiempo de ejecución?
- 6. Vista del centro debajo de otra Vista
- 7. Cómo agregar una vista detrás de otra vista en iOS
- 8. ¿Inflar una vista/diseño en otro diseño?
- 9. ¿Puedo llamar una vista desde otra vista?
- 10. ¿Cómo agregar vista superpuesta sobre otra vista en android?
- 11. ¿Es posible colocar una vista sobre otra en Android?
- 12. Android: tener una vista arbitraria de la vista debajo de otra vista como el teclado del software
- 13. detectar contacto en una vista detrás de otra vista?
- 14. vista personalizada con el diseño
- 15. Android RelativeLayout alinear el centro de una vista en la esquina superior derecha de otra vista
- 16. Nuevo en Android: dibujo de una vista en tiempo de ejecución
- 17. Android: Redibujando una vista específica dentro de un diseño
- 18. android - alinear una vista de texto en el centro de otra vista
- 19. ember.js cambio de una vista desde otra vista
- 20. ¿Cómo puedo mostrar una vista como una superposición de otra?
- 21. ¿Cómo centrar una vista dentro de un diseño de Android?
- 22. Cómo conectar una vista de diseño con una actividad
- 23. ¿Cómo navegar de una vista a otra vista usando UIPageControl?
- 24. Vista lateral con XML Android
- 25. otra vista en Pyramid
- 26. Cómo animar una vista para ocultarla debajo de otra vista y luego animar desde esa vista
- 27. Establecer el color de fondo de una vista de diseño a un degradado en Android?
- 28. Android: Vista múltiple de niños para vista personalizada con diseño existente
- 29. Android - Cambiar diseño de fragmento en tiempo de ejecución
- 30. ¿Se puede cargar una vista dividida dentro de la vista de detalle de otra vista dividida?
¿Debo eliminar el fragmento, o el fragmento también se eliminará? –
@KarlMorrison Esta pregunta tiene casi 4 años y no tiene nada que ver con fragmentos. Sugiero que presente una nueva pregunta y/o consulte 'android.app.FragmentTransaction' y su método' replace() '. – lupz
Es una pena que su respuesta sea demasiado compleja - en los comentarios - para programadores de Android noveles :-( –