es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Existe alguna manera de crear un cuadro de diálogo de selección múltiple dentro de un diálogo de lámina inferior en Android?

Estoy tratando de mover mis diálogos a una hoja inferior (bottom sheet dialog). Pero el problema al que me enfrento es que la hoja inferior no tiene un constructor como en el diálogo de alerta (alert dialog), o al menos eso parece. Además, no puedo encontrar el diálogo multiselección en la hoja inferior (bottom sheet).

val dialogBuilder = MaterialAlertDialogBuilder(this)
    dialogBuilder.setTitle(título)
    dialogBuilder.setCancelable(false)
    dialogBuilder.background =
        AppCompatResources.getDrawable(this, R.drawable.bg_white_round_red_ripple)
    dialogBuilder.setMultiChoiceItems(
        ArrayDeCadenas, ArrayDeBooleanos
    ) { _, i, b ->
        if (b) {
            arrayListDeEnteros.add(i)
            arrayListDeEnteros.sort()
        } else {
            arrayListDeEnteros.remove(i)
        }

    }
    dialogBuilder.setPositiveButton("OK") { dialogo, cual ->
        val constructorCadena = StringBuilder()
        if (arrayListDeEnteros.size > 0) {
            for (j in 0 until arrayListDeEnteros.size) {
                constructorCadena.append(ArrayDeCadenas[arrayListDeEnteros[j]])
                if (j != arrayListDeEnteros.size - 1) {
                    constructorCadena.append(", ")
                }
            }
            textView.text = constructorCadena.toString()
        } else {
            textView.text = título
        }
    }
    dialogBuilder.setNegativeButton(
        "Cancelar"
    ) { interfazDeDialogo, _ -> // Descartar el diálogo
        interfazDeDialogo.dismiss()
    }
    val alertDialog = dialogBuilder.create()

    alertDialog.show()

¿Hay alguna manera de hacer esto en una hoja inferior o tengo que crear una hoja inferior personalizada que se comporte así? ¿Existe una solución de estilo?

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Sí, es posible crear un diálogo de hoja inferior con opciones de selección múltiple similares al diálogo mostrado en el código. Aunque BottomSheetDialog no tiene un constructor, se puede crear programáticamente utilizando un archivo de diseño personalizado.

    Para crear un diálogo de hoja inferior personalizado, sigue estos pasos:

    1. Crea un archivo de diseño para el diálogo de hoja inferior. En este archivo, agrega un RecyclerView para mostrar las opciones de selección múltiple y dos botones para realizar las acciones de OK y Cancelar.
    2. En tu actividad, crea un objeto BottomSheetDialog y establece su vista en el archivo de diseño personalizado creado en el paso 1.

    3. Configura el RecyclerView para mostrar las opciones y manejar su selección de acuerdo a tus requisitos.

    4. Agrega onClickListeners a los botones de OK y Cancelar para realizar las acciones deseadas.

    La personalización del diálogo de hoja inferior se puede realizar utilizando estilos y temas personalizados. Puedes definir tu propio estilo personalizado y establecerlo como el tema para el BottomSheetDialog utilizando el método setTheme().

    Crear un diálogo de hoja inferior personalizado es una mejor solución en este caso, ya que proporciona más flexibilidad y control sobre la apariencia y funcionalidad del diálogo.

Comments are closed.