En el concepto anterior vimos como mostrar un texto en pantalla mediante la función 'Text'. Veremos en este concepto como mostrar varios textos en pantalla.
Confeccionar una función composable que reciba un entero y muestre la tabla de multiplicar de dicho valor uno debajo del otro.
Creamos el segundo proyecto llamado 'Compose2', borramos del archivo 'MainActivity.tk' todo el código innecesario:
package com.tutorialesprogramacionya.compose2
import android.os.Bundle
import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent
class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContent {
}
}
}
Procedemos a crear la función 'composable' llamada 'TablaMultiplicar' que recibe un entero como parámetro. Como primer aproximación implementemos el siguiente código:
package com.tutorialesprogramacionya.compose2
import android.os.Bundle
import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent
import androidx.compose.material.Text
import androidx.compose.runtime.Composable
class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContent {
TablaMultiplicar(tabla = 5)
}
}
}
@Composable
fun TablaMultiplicar(tabla:Int) {
for(x in 1..10) {
Text(text="$tabla * $x = ${tabla*x}")
}
}
A primera medida parece que funcionaría, ya que llamamos 10 veces a la función 'Text' indicando los valores de la tabla de multiplicar. Pero cuando lo ejecutamos tenemos en pantalla los 10 textos superpuestos en la parte superior de la pantalla:

Para evitar este problema debemos llamar a la función composable 'Column' y pasar el algoritmo que hemos implementado, luego la función Column se encargará en forma transparente a ubicar cada texto a mostrar uno debajo del otro:
package com.tutorialesprogramacionya.compose2
import android.os.Bundle
import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent
import androidx.compose.foundation.layout.Column
import androidx.compose.material.Text
import androidx.compose.runtime.Composable
class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContent {
TablaMultiplicar(tabla = 5)
}
}
}
@Composable
fun TablaMultiplicar(tabla:Int) {
Column {
for(x in 1..10) {
Text(text="$tabla * $x = ${tabla*x}")
}
}
}
Luego tenemos el siguiente resultado en el dispositivo:

Confeccionar una función composable que muestre una matriz identidad de 10 filas y columnas, en pantalla debe aparecer:

Creamos el proyecto compose3 y codificamos la siguiente función 'composable':
package com.tutorialesprogramacionya.compose3
import android.os.Bundle
import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.Row
import androidx.compose.material.Text
import androidx.compose.runtime.Composable
class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContent {
MatrizIdentidad()
}
}
}
@Composable
fun MatrizIdentidad() {
Column {
for(fil in 1..10)
Row {
for(col in 1..10) {
if (fil==col)
Text(text = " 1 ")
else
Text(text = " 0 ")
}
}
}
}
Como vemos llamamos primero a la función Column y dentro de la misma implementamos un for que se repita 10 veces, pero a su vez dentro de dicho for llamamos a la otra función composable llamada Row.
El for interno procede a mostrar en la misma fila, debido a que está dentro de la llamada a la función Row.