DorronElDePS

Untitled

Dec 17th, 2024
23
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 9.54 KB | None | 0 0
  1. package com.example.jetpackcompose
  2.  
  3. import android.os.Bundle
  4. import androidx.activity.ComponentActivity
  5. import androidx.activity.compose.setContent
  6. import androidx.activity.enableEdgeToEdge
  7. import androidx.compose.foundation.background
  8. import androidx.compose.foundation.clickable
  9. import androidx.compose.foundation.layout.Arrangement
  10. import androidx.compose.foundation.layout.Box
  11. import androidx.compose.foundation.layout.Column
  12. import androidx.compose.foundation.layout.Row
  13. import androidx.compose.foundation.layout.fillMaxSize
  14. import androidx.compose.foundation.layout.fillMaxWidth
  15. import androidx.compose.foundation.layout.padding
  16. import androidx.compose.foundation.layout.size
  17. import androidx.compose.material3.Button
  18. import androidx.compose.material3.Scaffold
  19. import androidx.compose.material3.Text
  20. import androidx.compose.material3.TextField
  21. import androidx.compose.runtime.Composable
  22. import androidx.compose.runtime.getValue
  23. import androidx.compose.runtime.mutableStateOf
  24. import androidx.compose.runtime.remember
  25. import androidx.compose.runtime.setValue
  26. import androidx.compose.ui.Alignment
  27. import androidx.compose.ui.Modifier
  28. import androidx.compose.ui.graphics.Color
  29. import androidx.compose.ui.tooling.preview.Preview
  30. import androidx.compose.ui.unit.dp
  31. import com.example.jetpackcompose.ui.theme.JetpackComposeTheme
  32.  
  33. import androidx.compose.material3.AlertDialog
  34. import androidx.compose.material3.Checkbox
  35. import androidx.compose.material3.DropdownMenu
  36. import androidx.compose.material3.DropdownMenuItem
  37. import androidx.compose.material3.RadioButton
  38.  
  39. class MainActivity10 : ComponentActivity() {
  40. override fun onCreate(savedInstanceState: Bundle?) {
  41. super.onCreate(savedInstanceState)
  42. enableEdgeToEdge()
  43. setContent {
  44. JetpackComposeTheme {
  45. Scaffold(modifier = Modifier.fillMaxSize()) { innerPadding ->
  46. Greeting10(
  47. modifier = Modifier.padding(innerPadding)
  48. )
  49. }
  50. }
  51. }
  52. }
  53. }
  54.  
  55. @Composable
  56. fun Greeting10(modifier: Modifier = Modifier) {
  57. var name by remember { mutableStateOf("") }
  58. var surname by remember { mutableStateOf("") }
  59. var address by remember { mutableStateOf("") }
  60. var phone by remember { mutableStateOf("") }
  61. var city by remember { mutableStateOf("") }
  62. var province by remember { mutableStateOf("") }
  63. var nif by remember { mutableStateOf("") }
  64. var cp by remember { mutableStateOf("") }
  65. var course by remember { mutableStateOf("") }
  66. var payment by remember { mutableStateOf("") }
  67. var selectedOptionRadio by remember { mutableStateOf("") }
  68. var expanded by remember { mutableStateOf(false) }
  69. var selectedOptionCombo by remember { mutableStateOf("Selecciona una opción") }
  70.  
  71. var showDialog by remember { mutableStateOf(false) }
  72. Box(
  73. modifier = modifier
  74. .background(Color.Yellow) // Fondo azul claro
  75. .fillMaxSize() // Ocupa todo el tamaño disponible
  76. .size(200.dp) // Tamaño fijo de 200x200 dp para la caja
  77. .padding(16.dp), // Espaciado interno
  78.  
  79.  
  80. )
  81. Column(
  82.  
  83. modifier = Modifier
  84. .fillMaxWidth()
  85. .padding(top=46.dp)
  86. .padding(end=12.dp)
  87. .padding(16.dp),
  88. horizontalAlignment = Alignment.CenterHorizontally
  89.  
  90. ) {
  91.  
  92.  
  93. // Campo de entrada para el nombre
  94. TextField(
  95. value = name,
  96. onValueChange = { name = it },
  97. label = { Text("Nombre") },
  98. modifier = Modifier.fillMaxWidth().padding(bottom = 8.dp)
  99. )
  100. // Campo de entrada para los apellidos
  101. TextField(
  102. value = surname,
  103. onValueChange = { surname = it },
  104. label = { Text("Apellidos") },
  105.  
  106. modifier = Modifier.fillMaxWidth().padding(bottom = 8.dp)
  107. )
  108.  
  109. TextField(
  110. value = address,
  111. onValueChange = { address = it },
  112. label = { Text("Dirección") },
  113. modifier = Modifier.fillMaxWidth().padding(bottom = 8.dp)
  114. )
  115. TextField(
  116. value = phone,
  117. onValueChange = { phone = it },
  118. label = { Text("Teléfono") },
  119. modifier = Modifier.fillMaxWidth().padding(bottom = 8.dp)
  120. )
  121. TextField(
  122. value = city,
  123. onValueChange = { city = it },
  124. label = { Text("Ciudad") },
  125. modifier = Modifier.fillMaxWidth().padding(bottom = 8.dp)
  126. )
  127. TextField(
  128. value = province,
  129. onValueChange = { province = it },
  130. label = { Text("Provincia") },
  131. modifier = Modifier.fillMaxWidth().padding(bottom = 8.dp)
  132. )
  133.  
  134. TextField(
  135. value = nif,
  136. onValueChange = { nif = it },
  137. label = { Text("DNI") },
  138. modifier = Modifier.fillMaxWidth().padding(bottom = 8.dp)
  139. )
  140. TextField(
  141. value = cp,
  142. onValueChange = { cp = it },
  143. label = { Text("Codigo Postal") },
  144. modifier = Modifier.fillMaxWidth().padding(bottom = 8.dp)
  145. )
  146. // Menú desplegable4
  147.  
  148.  
  149.  
  150. Column {
  151. // Texto que muestra la opción seleccionada
  152. Text(
  153. text = selectedOptionCombo,
  154. modifier = Modifier
  155. .fillMaxWidth() // Ocupa todo el ancho
  156. .padding(8.dp) // Espaciado interno
  157. .background(Color.LightGray) // Fondo gris claro
  158. .clickable { expanded = true } // Abre el menú al hacer clic
  159. )
  160.  
  161. // Menú desplegable
  162. DropdownMenu(
  163. expanded = expanded, // Controla si el menú está desplegado
  164. onDismissRequest = { expanded = false } // Cierra el menú al hacer clic fuera
  165. ) {
  166. // Opciones del menú
  167. val options = listOf("DAM/DAW 1", "DAM 2", "DAW 2")
  168. options.forEach { option ->
  169. DropdownMenuItem(
  170. text = { Text(option) }, // Texto de la opción
  171. onClick = {
  172. selectedOptionCombo = option // Actualiza la opción seleccionada
  173. expanded = false // Cierra el menú después de seleccionar
  174. }
  175. )
  176. }
  177. }
  178. }
  179.  
  180. /////////////////////////////////////////////////////////////////////////
  181.  
  182. // Componente CheckBox
  183. // Opción "Pagado"
  184. Row(
  185. verticalAlignment = Alignment.CenterVertically,
  186. modifier = Modifier.padding(bottom = 8.dp)
  187. ) {
  188. RadioButton(
  189. selected = selectedOptionRadio == "Tarjeta",
  190. onClick = { selectedOptionRadio = "Tarjeta" }
  191. )
  192. Text(text = "Tarjeta", modifier = Modifier.padding(start = 8.dp))
  193. }
  194.  
  195. // Opción "No Pagado"
  196. Row(
  197. verticalAlignment = Alignment.CenterVertically
  198. ) {
  199. RadioButton(
  200. selected = selectedOptionRadio == "Efectivo",
  201. onClick = { selectedOptionRadio = "Efectivo" }
  202. )
  203. Text(text = "Efectivo", modifier = Modifier.padding(start = 8.dp))
  204. }
  205. /////////////////////////////////////////////////////////////////////
  206.  
  207.  
  208.  
  209.  
  210.  
  211.  
  212. // Fila para los botones
  213. Row(
  214. modifier = Modifier.fillMaxWidth(), // La fila ocupa todo el ancho
  215. horizontalArrangement = Arrangement.SpaceEvenly // Distribución uniforme de los botones
  216. ) {
  217. // Botón "Aceptar"
  218. Button(onClick = {
  219. showDialog = true // Mostrar el diálogo
  220. }) {
  221. Text("Aceptar")
  222. }
  223. // Botón "Borrar"
  224. Button(onClick = {
  225. // Limpiar todos los campos
  226. name = ""
  227. surname = ""
  228. address = ""
  229. phone = ""
  230. city = ""
  231. province = ""
  232. nif = ""
  233. cp = ""
  234. course = ""
  235. payment = ""
  236. }) {
  237. Text("Borrar")
  238. }
  239.  
  240.  
  241. }
  242.  
  243.  
  244. }
  245.  
  246. if (showDialog) {
  247. AlertDialog(
  248. onDismissRequest = { showDialog = false }, // Acción al cerrar el cuadro
  249. title = { Text("Datos Ingresados") }, // Título del diálogo
  250. text = {
  251. Text(
  252. "Nombre: $name\n" +
  253. "Apellidos: $surname\n" +
  254. "Dirección: $address\n" +
  255. "Teléfono: $phone\n" +
  256. "Ciudad: $city\n" +
  257. "Provincia: $province\n" +
  258. "DNI: $nif\n" +
  259. "Codigo Postal: $cp\n" +
  260. "Curso a realizar: $selectedOptionCombo\n" +
  261. "Metodo de pago: $selectedOptionRadio"
  262. )
  263. },
  264. confirmButton = {
  265. // Botón dentro del diálogo
  266. Button(onClick = { showDialog = false }) {
  267. Text("Aceptar")
  268. }
  269. }
  270. )
  271. }
  272. }
  273.  
  274.  
  275.  
  276.  
  277. @Preview(showBackground = true)
  278. @Composable
  279. fun GreetingPreview10() {
  280. JetpackComposeTheme {
  281. Greeting10()
  282. }
  283. }
Add Comment
Please, Sign In to add comment