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 19/06/13, 18:55:31
Array

[xs_avatar]
manolazo manolazo no está en línea
Miembro del foro
 
Fecha de registro: jun 2012
Localización: Madrid
Mensajes: 219
Modelo de smartphone: Samsung Galaxy S7 edge
Tu operador: Pepephone
Como poner filas y columnas en un LinearLayout dinamicamente?

Buenas.

Tengo quiero crear dinamicamente este xml :

Código:

<GridLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent" 
    android:columnCount="2"
    android:rowCount="2"
    android:orientation="vertical"    >
    
    <LinearLayout 
        android:id="@+id/topleft"
        android:layout_width="160dp"
        android:layout_height="200dp"
        android:layout_column="0"
        android:layout_row="0"         
        	>
        
        <ImageView
            android:id="@+id/myimage1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"                      
            android:src="@drawable/tetona" 
            android:visibility="visible"
              />
                
         <ImageView
            android:id="@+id/myimage11"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"            
            android:src="@drawable/tocho"
            android:visibility="gone"
            />
     ></LinearLayout>
     
      <LinearLayout 
        android:id="@+id/topRigth"
        android:layout_width="160dp"
        android:layout_height="200dp"
        android:layout_column="1"
        android:layout_row="0"  
        >        
        <ImageView
            android:id="@+id/myimage2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"                      
            android:src="@drawable/tetona" />                    
     ></LinearLayout>
     
      <LinearLayout 
        android:id="@+id/bottomRight"
        android:layout_width="160dp"
        android:layout_height="200dp"
        android:layout_column="1"
        android:layout_row="1"  
        >        
        <ImageView
            android:id="@+id/myimage3"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"                      
            android:src="@drawable/tetona" />                    
     ></LinearLayout>
     
      <LinearLayout 
        android:id="@+id/BottonLeft"
        android:layout_width="160dp"
        android:layout_height="200dp"
        android:layout_column="0"
        android:layout_row="1"  
        >        
        <ImageView
            android:id="@+id/myimage4"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"                      
            android:src="@drawable/tetona" />                    
     ></LinearLayout>

</GridLayout>
Se pueden crear los LinearLayout dentro de un bucle:

LinearLayout layout = new LinearLayout(this);
layout.setId(id);
layout.setLayoutParams(new LinearLayout.LayoutParams(160,200));
gridlay.addView(layout);

Pero como pongo los parametros del LinearLayout android:layout_column y android:layout_row de forma dinamica??
Responder Con Cita


  #2  
Viejo 19/06/13, 19:10:20
Array

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

Pues en vez de un LinearLayout.LayoutParams, lo que tienes que meterle es un GridLayout.LayoutParams, pues son atributos del GridLayout realmente.
__________________
El mejor Cuatro en Raya de Android (Hilo en HTCMania, Play Store) ¡Un millón de descargas!
Responder Con Cita
  #3  
Viejo 19/06/13, 22:00:43
Array

[xs_avatar]
manolazo manolazo no está en línea
Miembro del foro
 
Fecha de registro: jun 2012
Localización: Madrid
Mensajes: 219
Modelo de smartphone: Samsung Galaxy S7 edge
Tu operador: Pepephone
Hola.
En la linea: layout.setLayoutParams(new LinearLayout.LayoutParams(160,200)); lo que hago es poner poner la anchura y altura del LinearLayout que esta dentro del GridLayout.

Si el GridLayout tiene dos filas y dos columnas: android:columnCount="2" android:rowCount="2"
quiero definir en el LinearLayout los parametros por corresponden a la fila 1 y la columna 1,
es decir android:layout_column="1" android:layout_row="1"

Pero como lo pongo dinamicamente?

Última edición por manolazo Día 19/06/13 a las 22:30:37.
Responder Con Cita
  #4  
Viejo 20/06/13, 18:11:36
Array

[xs_avatar]
manolazo manolazo no está en línea
Miembro del foro
 
Fecha de registro: jun 2012
Localización: Madrid
Mensajes: 219
Modelo de smartphone: Samsung Galaxy S7 edge
Tu operador: Pepephone
 Cita: Originalmente Escrito por mocelet Ver Mensaje
Pues en vez de un LinearLayout.LayoutParams, lo que tienes que meterle es un GridLayout.LayoutParams, pues son atributos del GridLayout realmente.
HOla, pero como indicas la posicion "i" y "j" de la fila y columna que quiero poner relativa al gridlayout? No veo como hacerlo como dices.

Código:
       GridLayout gridlay = (GridLayout)findViewById(R.id.gridpadre);
	gridlay.setColumnCount(2);
	gridlay.setRowCount(2);

	for (int i=0; i<(gridlay.getRowCount()); ++i){
		for(int j=0; j<gridlay.getColumnCount(); ++j){			

			LinearLayout layout = new LinearLayout(this);	
			layout.setId(id);	
			layout.setLayoutParams(new LinearLayout.LayoutParams(160,200));	
			gridlay.addView(layout);
como poner dinamicamente android:layout_column="i" and android:layout_row="j" ???

Es posible o hay que usar otros recursos?
Responder Con Cita
  #5  
Viejo 20/06/13, 22:06:22
Array

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

Pues algo así, ¿no?

layout.setLayoutParams(new GridLayout.LayoutParams(fila, columna));
__________________
El mejor Cuatro en Raya de Android (Hilo en HTCMania, Play Store) ¡Un millón de descargas!
Responder Con Cita
  #6  
Viejo 20/06/13, 22:13:53
Array

[xs_avatar]
manolazo manolazo no está en línea
Miembro del foro
 
Fecha de registro: jun 2012
Localización: Madrid
Mensajes: 219
Modelo de smartphone: Samsung Galaxy S7 edge
Tu operador: Pepephone
Hola.

Los parametros referentes a row y columns solo pueden ser del tipo:
layout.setLayoutParams(new GridLayout.LayoutParams(Spec rowSpec ,Spec columnspec));
es decir solo se refieren a las especificaciones de la fila y columna , no permite valores int referentes a la posicion respecto al gridlayout.

Todo lo que se escribe en el xml SE PUEDE HACER DINAMICAMENTE ? o hay casos que no es posible como este?
Responder Con Cita
  #7  
Viejo 20/06/13, 22:16: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: -

En efecto te estoy liando, disculpa XD No sé qué es lo que he visto entonces

Algo así te valdría

Código:
GridLayout.LayoutParams param =new GridLayout.LayoutParams();
        param.columnSpec = GridLayout.spec(columna);
        param.rowSpec = GridLayout.spec(fila);
Fuente: http://stackoverflow.com/questions/1...ogrammatically
__________________
El mejor Cuatro en Raya de Android (Hilo en HTCMania, Play Store) ¡Un millón de descargas!

Última edición por mocelet Día 20/06/13 a las 22:19:01.
Responder Con Cita
  #8  
Viejo 21/06/13, 02:18:08
Array

[xs_avatar]
manolazo manolazo no está en línea
Miembro del foro
 
Fecha de registro: jun 2012
Localización: Madrid
Mensajes: 219
Modelo de smartphone: Samsung Galaxy S7 edge
Tu operador: Pepephone
Hola.
El otro dia vi el mismo mensaje en StackOverflow pero como hablaban de rowspan y columnSpan que no tiene nada que ver con lo que yo preguntaba no me fije en el código que pusieron en medio que clarifica la duda que tenia.

Lo he probado y funciona. Un saludo.
Responder Con Cita
  #9  
Viejo 05/07/13, 22:34:04
Array

[xs_avatar]
pabl3st pabl3st no está en línea
Miembro del foro
 
Fecha de registro: feb 2011
Mensajes: 197
Modelo de smartphone: Galaxy S6 Edge+
Tu operador: Movistar
Un poco de offtopic....
Podrias subir el drawable ese "tetona" jajaja pa q lo veamos todos si es lo q parece q es
Responder Con Cita
  #10  
Viejo 05/07/13, 22:35:38
Array

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

 Cita: Originalmente Escrito por pabl3st Ver Mensaje
Un poco de offtopic....
Podrias subir el drawable ese "tetona" jajaja pa q lo veamos todos si es lo q parece q es
El drawable "tocho" no hace falta eh... DD
__________________
El mejor Cuatro en Raya de Android (Hilo en HTCMania, Play Store) ¡Un millón de descargas!
Responder Con Cita
Respuesta

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



Hora actual: 22:21:48 (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 / 邮件联系 /