|
||
|
![]() |
![]() |
Programación y Desarrollo para Android Subforo exclusivo para temas de programación de software para PDAs y desarrollo de aplicaciones, interfaces, etc bajo Android |
![]() |
|
Herramientas |
#1
|
||||
|
||||
Inflar un View que está dentro de un Layout
Buenas, estoy realizando una aplicación para android, y para ahorrarme algo de código he creado un Layout genérico que contiene la cabecera y el pie de la actividad, entre estos, está una View en la cual quiero "inflar" lo correspondiente para clase.
El problema es que cuando lo inflo no se muestra nada. En el layout.. Código:
<!-- CABECERA --> <LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="0" android:background="#008080" android:orientation="horizontal"> .... </LinearLayout> <!-- CONTENEDOR --> <View android:id="@+id/general_container" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1"/> <!-- PIE --> <LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="0" android:background="#008080" android:orientation="horizontal"> .... </LinearLayout> </LinearLayout> Código:
protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_inicio); View view =(View) findViewById(R.id.general_container); view = LayoutInflater.from(getApplicationContext()).inflate(R.layout.textview_layout, null); TextView tv1 = (TextView) view.findViewById(R.id.tv); tv1.setText("HOLA1"); TextView tv2 = (TextView) view.findViewById(R.id.tv2); tv2.setText("HOLA2"); |
|
#2
|
||||
|
||||
Normal, la vista que has "inflado" no está asociada de ninguna manera al layout de activity_inicio. Así que es como si no existiera.
Para lo que quieres usa los ViewStub, pones uno para la cabecera y otro para el pie en el layout de cada activity. Los stubs se sustituyen luego por el layout que quieras, de modo que tienes la cabecera en un único xml, y el pie en otro único xml. Más info: http://developer.android.com/referen.../ViewStub.html
__________________
El mejor Cuatro en Raya de Android (Hilo en HTCMania, Play Store) ¡Un millón de descargas!
|
#3
|
||||
|
||||
Tienes otra opción si sigues por la línea en la que ibas.
Fijate que obtienes la referencia a general_container, y quieres que sea el padre de la nueva vista a inflar. Utilizando el mismo método, fíjate que el último parámetro es el root. Si en éste parámetro pones la referencia a general_container, debería hacer lo que pides. Código:
LayoutInflater.from(getApplicationContext()).inflate(R.layout.textview_layout, view);
__________________
|
#4
|
||||
|
||||
Muy buena la última respuesta ;)
__________________
El mejor Cuatro en Raya de Android (Hilo en HTCMania, Play Store) ¡Un millón de descargas!
|
#5
|
||||
|
||||
Actualizado: Bueno, lo he solucionado, dejo aquí puesto como por si a alguien más le ocurre lo mismo:
1) He eliminado la View container y en su lugar en colocado un LinearLayout. 2) He generado una View desde la activity y le he inflado el Layout que quería. 3) He accedido mediando findViewById al Layout Container y le he agregado la View con .addView Y así me queda todo bien colocado y como quería, muchísimas gracias. ![]() Buenas de nuevo! He logrado solucionar algo, como dijo manelizzard, he añadido el root al inflater, pero este solo me deja agregarlo al LinearLayout principal del xml, y haciendo de este modo me agrega la View, pero no donde le corresponde, si no al final del todo (Pegando así el pie y la cabecera).
He agregado un LinearLayout que "recoge" a la View, pero al seleccionar este como Root, me da un error. Seguiré investigando a ver, muchísimas gracias a ambos. ![]() Última edición por buni Día 23/11/12 a las 11:40:27. |
![]() |
![]() |
||||||
|