2010-08-13 9 views
19

Quiero agregar dinámicamente algunas vistas a un LinearLayout que ya está definido en XML.Android: Agregue una vista a un Diseño específico del código

Puedo agregar vistas a la pantalla pero no se colocan 'dentro' de la derecha LinearLayout.

¿Cómo puedo obtener una referencia a este diseño específico del código, similar a obtener un View usando findViewById()?

+1

Si usted termina con sus no vistas en el LinearLayout derecha, significa que tiene una mala Haga clic en Buscar Compruebe si encuentra su diseño lineal por ID de la manera correcta (también conocido como ID único definido en el archivo XML). Y sin código, no se puede decir mucho. – Pentium10

Respuesta

38

Como Marcarse señaló que puede hacer

ViewGroup layout = (ViewGroup) findViewById(R.id.your_layout_id); 
TextView tv = new TextView(this); 
tv.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT)); 
tv.setText("Added tv"); 
layout.addView(tv); 

La clase LinearLayout extiende ViewGroup que a su vez se extiende la clase View. Esto hace que adquirir una referencia a un diseño sea tan fácil como obtener una referencia a otra Vista.

+0

¡Al usar ViewGroup, funciona perfectamente! – Erik

+0

¡Funciona para mí, gracias! Solo una nota, en mi caso estaba usando orientación horizontal, pero cada vez que agregué el nuevo artículo, no apareció. Solo cuando cambié la orientación a vertical, apareció el nuevo elemento. –

20

Esto debería funcionar:

LinearLayout layout = (LinearLayout) findViewById(R.id.your_layout_id); 
TextView tv = new TextView(this); 
tv.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT)); 
tv.setText("Added tv"); 
layout.addView(tv); 
+0

cada vez que vuelvo a cargar la actividad, las vistas recién agregadas no aparecen. Quiero saber cómo hacer esas vistas a un 'ViewGroup' para que se agreguen de forma permanente? Gracias –

1

Mejor Versión: Para añadir otro diseño en la actividad/Fragmento

LayoutInflater mInflater = LayoutInflater.from(getActivity()); 
View mProgressBarFooter = mInflater.inflate(R.layout.spinner, null, false); 
textLoader = (TextView) mProgressBarFooter.findViewById(R.id.footer_label); 

feliz Coding (-:

Cuestiones relacionadas