Un FragmentDialog implementado con RecyclerView que puede aceptar selecciones únicas o múltiples
Instalación
RecyclerPickerDialog se distribuye a través de Maven Central, Jcenter y Jitpack.
implementation 'com.github.guilhe:recycler-picker-dialog:${LATEST_VERSION}'
Uso
Tipos de selección
enum class SelectionType { SINGLE, MULTIPLE }
Tipos de selector
enum class SelectorType { CHECK_BOX, RADIO_BUTTON, SWITCH }
Campos personalizados (y valores predeterminados)
var title = ""
var showSearchBar = false
var inputHint = ""
var buttonText: String = "Ok"
var resetValuesOnShow = true
var dismissKeyboardOnSelection = true
var dismissOnSelection = false
var isChoiceMandatory = false
var data: ArrayList<Item> = arrayListOf()
@AnimRes var itemsLayoutAnimator: Int? = null
var dialogHeight: Int = ViewGroup.LayoutParams.MATCH_PARENT
var lifecycleOwner: LifecycleOwner? = null
Evita pérdidas de memoria
Simplemente agregue la siguiente línea para evitar pérdidas de memoria si no se eliminan antes de que se destruya la actividad o el fragmento:
picker.newInstance(/* setup... */).apply { lifecycleOwner = this@MainActivity }
Temas
Para anular el tema predeterminado, cree el suyo propio simplemente extendiéndolo y reemplazando los valores de color deseados:
<style name="DialogA" parent="RecyclerPickerDialogTheme">
<item name="colorPrimary">@color/red</item>
<item name="recyclerPickerDialogCornerRadius">20dp</item>
</style>
Atributos
Puede reemplazar los siguientes atributos:
<resources>
<style name="RecyclerPickerDialogTheme" parent="Theme.MaterialComponents.Light.Dialog">
<item name="colorPrimary"/>
<item name="colorOnPrimary"/>
<item name="colorSecondary"/>
<item name="android:textColorPrimary"/>
<item name="android:textColorSecondary"/>
<item name="colorAccent"/>
<item name="android:colorEdgeEffect"/>
<item name="recyclerPickerDialogCornerRadius"/>
</style>
</resources>
Dónde está:
- colorPrimary > Color de fondo del título y el botón
- colorOnPrimary > Título y color del texto del botón
- colorSecondary > Color de fondo del cuadro de diálogo y la línea
- colorEdgeEffect > Color del borde de RecyclerView
- textColorPrimary > Buscar y color de texto de línea
- textColorSecondary > Sugerencia de búsqueda y color del icono; Color de líneas horizontales
- colorSurface > CheckBox, RadioButton y Color Switch deseleccionados
- colorOnSurface > Fondo del botón cuando está deshabilitado (Nota sustituir colorSurface)
- colorAccent > CheckBox, RadioButton y Switch comprobaron el color; Sugerencia de color del cursor
- recicladorPickerDialogCornerRadius > Radio de las esquinas del diálogo
Creando una nueva instancia:
val picker =
RecyclerPickerDialogFragment
.newInstance(
type = SelectionType.SINGLE, //default
selector = SelectorType.CHECK_BOX, //default
theme = R.style.RecyclerPickerDialogTheme, //default
onItemsPicked = { selected -> /* selected items or empty */ }
)
.apply {
/* configure custom fields */
}
Muéstralo cuando quieras:
picker.show(supportFragmentManager, "MyPickerDialogFragment")
Prueba el archivo aplicación de muestra para verlo funcionar!
Adicciones
Errores y comentarios
Para errores, preguntas y discusiones, utilice los problemas de GitHub.
LICENCIA
Copyright (c) 2020 – presente GuilhE
Con licencia de Apache License, Versión 2.0 (la “Licencia”); no puede utilizar este archivo excepto de acuerdo con la licencia. Puede obtener una copia de la licencia en
http://www.apache.org/licenses/LICENSE-2.0
A menos que lo exija la ley aplicable o se acuerde por escrito, el software distribuido bajo la Licencia se distribuye “TAL CUAL”, SIN GARANTÍAS NI CONDICIONES DE NINGÚN TIPO, ya sea expresa o implícita. Consulte la Licencia para conocer el idioma específico que rige los permisos y restricciones de la Licencia.
.