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 19/06/13, 18:55:31
Avatar de manolazo
manolazo manolazo no está en línea
Miembro del foro
Mensajes: 219
 
Fecha de registro: jun 2012
Localización: Madrid
Mensajes: 219
Modelo de smartphone: Samsung Galaxy S7 edge
Tu operador: Pepephone
Mencionado: 1 comentarios
Tagged: 0 hilos
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
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
Pues en vez de un LinearLayout.LayoutParams, lo que tienes que meterle es un GridLayout.LayoutParams, pues son atributos del GridLayout realmente.
Responder Con Cita
  #3  
Viejo 19/06/13, 22:00:43
Avatar de manolazo
manolazo manolazo no está en línea
Miembro del foro
Mensajes: 219
 
Fecha de registro: jun 2012
Localización: Madrid
Mensajes: 219
Modelo de smartphone: Samsung Galaxy S7 edge
Tu operador: Pepephone
Mencionado: 1 comentarios
Tagged: 0 hilos
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
Avatar de manolazo
manolazo manolazo no está en línea
Miembro del foro
Mensajes: 219
 
Fecha de registro: jun 2012
Localización: Madrid
Mensajes: 219
Modelo de smartphone: Samsung Galaxy S7 edge
Tu operador: Pepephone
Mencionado: 1 comentarios
Tagged: 0 hilos
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
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
Pues algo así, ¿no?

layout.setLayoutParams(new GridLayout.LayoutParams(fila, columna));
Responder Con Cita
  #6  
Viejo 20/06/13, 22:13:53
Avatar de manolazo
manolazo manolazo no está en línea
Miembro del foro
Mensajes: 219
 
Fecha de registro: jun 2012
Localización: Madrid
Mensajes: 219
Modelo de smartphone: Samsung Galaxy S7 edge
Tu operador: Pepephone
Mencionado: 1 comentarios
Tagged: 0 hilos
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
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
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

Ú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
Avatar de manolazo
manolazo manolazo no está en línea
Miembro del foro
Mensajes: 219
 
Fecha de registro: jun 2012
Localización: Madrid
Mensajes: 219
Modelo de smartphone: Samsung Galaxy S7 edge
Tu operador: Pepephone
Mencionado: 1 comentarios
Tagged: 0 hilos
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
Avatar de pabl3st
pabl3st pabl3st no está en línea
Miembro del foro
Mensajes: 197
 
Fecha de registro: feb 2011
Mensajes: 197
Modelo de smartphone: Galaxy S6 Edge+
Tu operador: Movistar
Mencionado: 2 comentarios
Tagged: 0 hilos
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
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
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
Responder Con Cita
Respuesta

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

Herramientas

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: 09:52:06 (GMT +2)

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