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

Respuesta
 
Herramientas
  #1  
Viejo 22/11/12, 18:29:28
Array

[xs_avatar]
buni buni no está en línea
Usuario novato en la web
 
Fecha de registro: jun 2011
Localización: Cádiz, España
Mensajes: 17
Modelo de smartphone: Samsung Galaxy SII
Tu operador: Pepephone
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>
Y en la activity...
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");
Muchísimas gracias de antemano.
Responder Con Cita


  #2  
Viejo 22/11/12, 18:55:11
Array

[xs_avatar]
mocelet mocelet no está en línea
Desarrollador
 
Fecha de registro: may 2011
Localización: Madrid
Mensajes: 2,203
Tu operador: -

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!
Responder Con Cita
  #3  
Viejo 22/11/12, 19:22:38
Array

[xs_avatar]
manelizzard manelizzard no está en línea
Usuario poco activo
 
Fecha de registro: oct 2012
Localización: Barcelona
Mensajes: 40
Modelo de smartphone: HTC One X+
Tu operador: Simyo
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);
Un saludo
__________________
Responder Con Cita
  #4  
Viejo 22/11/12, 20:33:05
Array

[xs_avatar]
mocelet mocelet no está en línea
Desarrollador
 
Fecha de registro: may 2011
Localización: Madrid
Mensajes: 2,203
Tu operador: -

Muy buena la última respuesta ;)
__________________
El mejor Cuatro en Raya de Android (Hilo en HTCMania, Play Store) ¡Un millón de descargas!
Responder Con Cita
  #5  
Viejo 23/11/12, 11:02:00
Array

[xs_avatar]
buni buni no está en línea
Usuario novato en la web
 
Fecha de registro: jun 2011
Localización: Cádiz, España
Mensajes: 17
Modelo de smartphone: Samsung Galaxy SII
Tu operador: Pepephone
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.

 Cita:
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.
Responder Con Cita
Respuesta

Estás aquí
Regresar   Portal | Indice > Todo sobre Android > Programación y Desarrollo para Android

Herramientas


Hora actual: 21:37:49 (GMT +2)



User Alert System provided by Advanced User Tagging (Lite) - vBulletin Mods & Addons Copyright © 2025 DragonByte Technologies Ltd.

Contactar por correo / Contact by mail / 邮件联系 /