Android NumberPicker envuelve valores cuando se cambian los valores mostrados
Tengo un numberpickers
androide con un numberpickers
3 dentro. Si cambia el selector 3, se activará un cambio en los valores mostrados de los 2 primeros pickers
. Sin embargo, he notado cuando cambio los valores mostrados, y llamar
setWrapSelectorWheel(false)
Todavía muestra los nuevos valores como envueltos visualmente (puedo ver el último valor sobre el primero).
- Diálogo de PreferenciasActividad de Android con el selector de números
- Cómo aumentar el tamaño de la fuente NumberPicker Android 6.0?
- Bloquear la transición entre el valor mínimo y el valor máximo en NumberPicker
- Android - Error al inflar SimonVT NumberPicker clase en mi diseño xml
- Android NumberPicker - Números negativos
Si toco el selector de repente se encaja en la rueda selectora de no envolver. Lo que es extraño es que llamo
getWrapSelectoWheel()
Después de fijar los valores exhibidos y él devuelve falso … apenas como lo fije. Pero visualmente está mal.
¿Alguna idea de lo que está pasando?
¡Muchas gracias!
- ¿Cómo obtener el número seleccionado de NumberPicker?
- ¿Cómo saltar un número de selector de números?
- Modificar el elemento seleccionado en Numberpicker Android
- Android NumberPicker con Formatter no se formatea en la primera reproducción
- Seleccionador de números de Android obtiene valor para textview
- Android numberpicker para números de coma flotante
- Cómo reducir el tamaño de fuente en NumberPicker
- Cómo cambiar el valor de NumberPicker con animación?
He encontrado una solución, Daniel estaba en el camino correcto, sin embargo, parece que initializeSelectorWheelIndices
es realmente una mala cosa una vez que ya ha establecido sus valores. Debido a esto, necesita llamar a setMinValue
y setMaxValue
ANTES de establecer sus valores. Sin embargo, si ya tiene una matriz configurada en su selector, si llama a setMaxValue
con un valor superior al de la matriz actual, le dará una excepción ArrayIndexOutOfBounds
.
La solución entonces es borrar los viejos valores de la exhibición, fijar su valor máximo, entonces usted puede llamar setWrapSelectorWheel
y setDisplayValues
:
public void updatePickerValues(String[] newValues){ picker.setDisplayedValues(null); picker.setMinValue(0); picker.setMaxValue(newValues.length -1); picker.setWrapSelectorWheel(false); picker.setDisplayedValues(newValues); }
No sé qué versión de Android estás ejecutando, pero te sugiero que leas el código fuente de NumberPicker (v4.2.2) . Tal vez usted necesita para desencadenar una llamada al método privado initializeSelectorWheelIndices
que se puede hacer a través de una llamada a algunos de los métodos públicos.
Aunque creo que su uso de la recolector, al cambiar la bandera de envoltura a medio camino, parece un poco inusual. ¿No quieres que este comportamiento sea consistente? En cuyo caso, haga una llamada a setWrapSelectorWheel
una vez que haya establecido los valores mínimo y máximo y, a continuación, déjelo en paz.
He comprobado este comportamiento también en kitkat. Es un error. No se pudo encontrar un informe existente, así que creé uno nuevo aquí: bug # 98319
Por respuestas anteriores encontré que hacer setWrapSelectorWheel (false) la última llamada después de todas las llamadas de configuración funcionará para la mayoría de los escenarios. En mi caso estoy cambiando dinámicamente los límites de la NumberPicker como el usuario está interactuando y no puedo conseguir que se comporten al 100%. Estoy optando por vivir con el selector de envoltura.
- La barra de título sigue apareciendo, incluso con requestWindowFeature o android: theme
- Diálogo de configuración de fecha y hora en Android