2012-05-30 16 views
6

Estoy usando un NumberPicker y apuntar a API 11 y superior (3.0 y superior), entonces estoy usando el NumberPicker compatible. Esto se está utilizando en una aplicación de temporizador. Quiero poder ocultar los botones de incremento y disminución a voluntad para que los botones no ocupen espacio en el diseño cuando están ocultos. Intenté hacer esto:Android NumberPicker ocultar botones de incremento y decremento

View increment = secs.getChildAt(0); 
increment.setVisibility(View.GONE); 
View decrement = secs.getChildAt(2); 
decrement.setVisibility(View.GONE); 

donde secs es mi NumberPicker por segundos en el temporizador. Si trato de ocultar el lugar donde se muestra el número (un widget EditText) se oculta bien, pero el código anterior no hace nada.

Entonces, mi pregunta es, ¿cómo logro ocultar los botones de incremento y disminución? Realmente me gustaría evitar hacer mi propio selector de número personalizado, como he leído en otras publicaciones, pero si esa es realmente la única forma en que estoy dispuesto a intentarlo.

Gracias!

Aquí hay un código adicional según lo solicitado. Código en el método onClick para cuando se pone en marcha el cronómetro:

if (stopPush) 
{ 
startTime = System.currentTimeMillis() - elapsedTime; 
} 
else 
{ 
startTime = System.currentTimeMillis(); 
} 
mHandler.removeCallbacks(startTimer); 
mHandler.postDelayed(startTimer, 0); 

Código que maneja habilidades cronómetro:

private Runnable startTimer = new Runnable() 
{ 
public void run() 
{ 
    elapsedTime = System.currentTimeMillis() - startTime; 
    updateTimer(elapsedTime); 
    mHandler.postDelayed(this, REFRESH_RATE); 
} 
}; 

código para calcular y actualizar el tiempo del cronómetro:

this.millis = (int) (elapsedTime/100); 
this.seconds = (int) (elapsedTime/1000); 
this.minutes = (seconds/60); 
this.hours = (minutes/60); 
millis = millis % 10; 
seconds = seconds % 60; 
minutes = minutes % 60; 
hours = hours % 24; 
runOnUiThread(new Runnable() 
{ 
public void run() 
{ 
    hrs.setValue(hours); 
} 
}); 
runOnUiThread(new Runnable() 
{ 
public void run() 
{ 
    mins.setValue(minutes); 
} 
}); 
runOnUiThread(new Runnable() 
{ 
public void run() 
{ 
    secs.setValue(seconds); 
} 
}); 
runOnUiThread(new Runnable() 
{ 
public void run() 
{ 
    mills.setValue((int) millis); 
} 
}); 

Respuesta

4

Cuando no lo hace proporcione el valor mínimo y máximo en el selector de números, los botones son (normalmente) no se muestran.

+0

Si no proporciono los valores mínimo y máximo, ¿me encontraré con algún otro problema? ¿Existe un mínimo y máximo predeterminado incorporado si no se proporciona que podría causar bloqueos? ¡Gracias por la sugerencia! Eso es definitivamente lo suficientemente simple, siempre y cuando todo lo demás funcione correctamente. –

+0

Intenté su sugerencia y los botones desaparecen, pero no hay ningún efecto cuando intento llamar a setValue para cambiar el valor del número. Simplemente se mantiene en 0. –

+0

Esto no es lo que esperaba. ¿Podría publicar algún código sobre lo que hace exactamente? – barrel

0

sitio desarrollador dice,

NumberPicker es un widget que permite al usuario seleccionar un número de un rango predefinido. Hay dos sabores de este widget y uno que se presenta al usuario depende del tema actual.

Si el tema actual se deriva de Theme, el widget presenta el valor actual como un campo de entrada editable con un botón de incremento arriba y un botón de disminución a continuación. Presionar prolongadamente los botones permite un cambio rápido del valor actual. Al tocar en el campo de entrada, puede escribir un valor deseado.

Si el tema actual se deriva de Theme_Holo o Theme_Holo_Light, el widget presenta el valor actual como un campo de entrada editable con un valor menor arriba y un valor mayor debajo. Al tocar el valor menor o mayor, se selecciona animando el eje del número hacia arriba o hacia abajo para que el valor elegido sea actual. Al saltar hacia arriba o hacia abajo, permite múltiples incrementos o decrementos del valor actual. Al presionar prolongadamente los valores menores y mayores también se puede cambiar rápidamente el valor actual. Al tocar el valor actual, se puede ingresar el valor deseado.

Así que puede intentar cambiar el tema.

Cuestiones relacionadas