Red de conocimiento informático - Computadora portátil - Android imita el selector condicional de ios

Android imita el selector condicional de ios

Recientemente, he estado pensando en cómo escribir Ver. Quizás sea más conveniente escribir Ver. Escribir otras cosas requiere tiempo para organizar y resumir. Después de escribir Ver, simplemente márquelo y escríbalo.

Me estoy preparando para el feriado del Día Nacional y no tengo ganas de trabajar, así que escribiré un artículo sencillo y práctico sin perder tiempo.

A veces, el lado de iOS usará selectores condicionales. Parece que está integrado, pero el lado de Android no lo tiene. Pero para unificar los dos lados, no tenemos más remedio que acomodarlos (. dejas un selector personalizado. Es básicamente imposible escribir personalizaciones).

La más clásica es que tenemos la necesidad de seleccionar una dirección, como por ejemplo Estados Unidos aquí:

Este android no es nativo y solo puede seleccionar fechas. ¿Cómo hacemos esto? Personalízalo, parece un poco difícil, luego usa la camiseta.

/Bigkoo/Android-PickerView

Busqué mucho. Creo que esta biblioteca es mejor, más completa y se ha mantenido, o es más recomendada y más fácil de usar. usar. Hay documentación clara en el proyecto y se recomienda explorar la documentación antes de verla.

Lo que obtuve:

Por cierto, todavía estoy explorando el código fuente. Descubrí que hay 3 clases importantes, que se presentarán brevemente más adelante:

(1) WheelView

(2) WheelOptions para la selección condicional. Creo que la encapsulación de esta clase. es un poco vm

(3) El OptionsPickerView encapsulado más externo

Si solo desea seleccionar la dirección, utilícela para encapsularla directamente, pero a veces puede necesito usar Para otros diseños o necesidades, necesitamos ampliar sus funciones originales. Por ejemplo, en el período de tiempo que estoy escribiendo ahora, no es posible usarlo directamente y debe expandirlo usted mismo.

Para ampliarlo, necesitamos navegar por el código fuente para ver cómo está escrito internamente.

Puedes encontrar el método de llamada de la clase OptionsPickerView

Luego mira dentro de la clase OptionsPickerView, encontrarás muchos métodos, pero básicamente son un método constructor y un método getset, nosotros En esto se pueden encontrar varios métodos importantes.

Lo que debe hacer aquí es establecer propiedades para la vista. Lo importante está aquí

La idea aquí es entregar la vista al objeto WheelOptions y dejar que haga el procesamiento. Luego podrá ver el

diseño.

Puedes ver que está escrito en él y fijado en 3 columnas. De hecho, no estoy del todo de acuerdo con este enfoque. Para este tipo de paquete de vista de instancias múltiples, personalmente prefiero utilizar un enfoque dinámico. Dado que aquí se fijan 3 columnas, las 4 columnas que describí anteriormente no se pueden implementar directamente, por lo que es necesario expandirlas. El WheelView aquí es de una sola columna

Su diseño es de 3 columnas fijas, por lo que no puedo reutilizarlo, solo puedo reescribir el diseño.

Escribí LinearLayout solo para agregar WheelView dinámicamente.

El OptionsPickerView original

Tiene un diseño fijo en el generador, por lo que no puedo extenderlo, por lo que, por supuesto, sería mejor anular un OptionsPickerView. Por supuesto, también es posible anular Builder, pero creo que anular OptionsPickerView es mejor.

Por lo tanto, necesitamos heredar BasePickerView para anular PickerView. No hay ningún problema con su lógica interna original, solo necesito copiarla y usarla.

Modificado

(1) Modificar el diseño a mi diseño

(2) Luego crear un WheelView para agregar la extensión createWheel(optionsPicker, context, total) ;Como no quiero escribir Builder con tantos parámetros cada vez, obtengo este pickerview como intermedio y dejo que las subclases lo hereden para extensiones simples

Reescribimos un WheelView porque el WheelView original no arregla 3 -Procesamiento de columnas, necesitamos hacerlo dinámico.

(1) Agregué un parámetro total adicional para indicar cuántas columnas quiero mostrar

(2) Utilicé la matriz List wvList para crear y agregar dinámicamente WheelView

(3) Utilizo elementos List> para cargar los datos de cada columna (uso esto para cargar los datos de cada columna). Los datos de cada columna (solo hice esto cuando la Rueda no estaba asociada con múltiples columnas, y no lo hice cuando estaba asociada con múltiples columnas)

(4) showWheelView()

Este método muestra reglas. El valor predeterminado es mostrar el número total de columnas en promedio. Si se requiere una visualización especial, como dije anteriormente, escriba una clase que herede esta clase para mostrar las reglas nuevamente. Este método solo necesita volver a mostrar las reglas, como mi selector de período de tiempo.

Anule este método para mostrar lo que necesita mostrar

También es conveniente llamar.

El propósito de mi discurso es presentar primero esta biblioteca de tres vías, que es bastante útil. En segundo lugar, la importancia de la expansión. En tercer lugar, la eficiencia de las vacaciones es realmente muy baja.