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  
Viejo 22/11/12, 18:29:28
Avatar de buni
buni buni no está en línea
Usuario novato en la web
Mensajes: 17
 
Fecha de registro: jun 2011
Localización: Cádiz, España
Mensajes: 17
Modelo de smartphone: Samsung Galaxy SII
Versión de ROM: Original
Tu operador: Pepephone
Mencionado: 0 comentarios
Tagged: 0 hilos
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
Avatar de mocelet
mocelet mocelet no está en línea
Desarrollador
Mensajes: 2,203
 
Fecha de registro: may 2011
Localización: Madrid
Mensajes: 2,203
Tu operador: -
Mencionado: 17 comentarios
Tagged: 2 hilos
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
Responder Con Cita
  #3  
Viejo 22/11/12, 19:22:38
Avatar de manelizzard
manelizzard manelizzard no está en línea
Usuario poco activo
Mensajes: 40
 
Fecha de registro: oct 2012
Localización: Barcelona
Mensajes: 40
Modelo de smartphone: HTC One X+
Tu operador: Simyo
Mencionado: 0 comentarios
Tagged: 0 hilos
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
Avatar de mocelet
mocelet mocelet no está en línea
Desarrollador
Mensajes: 2,203
 
Fecha de registro: may 2011
Localización: Madrid
Mensajes: 2,203
Tu operador: -
Mencionado: 17 comentarios
Tagged: 2 hilos
Muy buena la última respuesta ;)
Responder Con Cita
  #5  
Viejo 23/11/12, 11:02:00
Avatar de buni
buni buni no está en línea
Usuario novato en la web
Mensajes: 17
 
Fecha de registro: jun 2011
Localización: Cádiz, España
Mensajes: 17
Modelo de smartphone: Samsung Galaxy SII
Versión de ROM: Original
Tu operador: Pepephone
Mencionado: 0 comentarios
Tagged: 0 hilos
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   HTCMania > Todo sobre Android > Programación y Desarrollo para Android


Reglas de Mensajes
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Las caritas están On
Código [IMG] está On
Código HTML está Off

Saltar a Foro



Hora actual: 12:31:38 (GMT +2)

Cookies settings
Powered by vBulletin™
Copyright © vBulletin Solutions, Inc. All rights reserved.
 
HTCMania: líderes desde el 2007