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).

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!

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.

  • El valor predeterminado de Android Numberpicker no viene
  • AlertDialog con NumberPicker procesado incorrectamente
  • Configuración de typeFace a NumberPicker
  • Android Loading Selector de números personalizado Drawable
  • NPE en ChangeCurrentByOneFromLongPressCommand (en dispositivos Samsung con Android 4.3)
  • Android NumberPicker, DatePicker, flechas TimePicker están desaparecidas
  • Cambiar el color de texto de NumberPicker
  • Cómo hacer que NumberPicker no sea recurrente
  • ¿Cómo utilizar NumberPicker en la aplicación de Android con API 7?
  • Android NumberPicker: Establecer min, max, por defecto de XML
  • ¿Cómo implementar android Minutos-Segundos selector?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.