2012-05-30 19 views
6

Używam NumberPicker i używam interfejsu API 11 i nowszych wersji (3.0 i nowsze), więc używam obsługiwanego NumberPicker. Jest to używane w aplikacji licznika czasu. Chcę móc dowolnie ukrywać przyciski przyrostu i dekrementacji, aby przyciski nie zajmowały miejsca w układzie, gdy są ukryte. Próbowałem to zrobić:Android NumberPicker ukrywa przyciski zwiększania i zmniejszania

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

gdzie secs jest moim NumberPicker przez kilka sekund w zegarze. Jeśli spróbuję ukryć miejsce, w którym wyświetla się numer (widżet EditText), ukrywa się dobrze, ale powyższy kod nic nie robi.

Moje pytanie brzmi: w jaki sposób mogę ukryć przyciski wzrostu i dekrementacji? Naprawdę chciałbym uniknąć tworzenia własnego niestandardowego selektora liczb, o którym czytałem w kilku innych postach, ale jeśli to jest naprawdę jedyny sposób, w jaki jestem gotów go wypróbować.

Dzięki!

Oto dodatkowy kod na żądanie. kod w metodzie onClick, gdy stoper jest uruchomiony:

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

kod, który obsługuje stopera umiejętności:

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

Kod do obliczania i uaktualnianie czasu stopera:

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); 
} 
}); 

Odpowiedz

4

kiedy nie podaj wartość min i max na numberpicker, przyciski (normalnie) nie są wyświetlane.

+0

Jeśli nie podam wartości minimalnej i maksymalnej, czy napotkasz inne problemy? Czy istnieje domyślne ustawienie min i maks, jeśli nie podano, co może spowodować awarie? Dzieki za sugestie! Jest to zdecydowanie wystarczająco proste, o ile wszystko inne nadal działa poprawnie. –

+0

Wypróbowałem twoją sugestię i przyciski rzeczywiście znikają, ale nie ma żadnego efektu, gdy próbuję wywołać setValue, aby zmienić wartość numberpicker. Pozostaje na 0. –

+0

Nie tego się spodziewałem. Czy możesz napisać kod na temat tego, co dokładnie robisz? – barrel

0

strona Twórca mówi

NumberPicker jest widget, który pozwala użytkownikowi wybrać numer z ustalonym zakresem. Istnieją dwa smaki tego widgetu i jeden z nich jest prezentowany użytkownikowi w zależności od aktualnego tematu.

Jeśli bieżący motyw pochodzi z Theme, widżet przedstawia aktualną wartość jako edytowalne pole wprowadzania z przyciskiem zwiększania powyżej i poniższym przyciskiem zmniejszania. Długie naciśnięcie przycisków pozwala na szybką zmianę aktualnej wartości. Stuknięcie pola wprowadzania umożliwia wpisanie żądanej wartości.

Jeśli bieżący motyw pochodzi z Theme_Holo lub Theme_Holo_Light, widżet przedstawia bieżącą wartość jako edytowalne pole wejściowe o niższej wartości powyżej i większej wartości poniżej. Stuknięcie mniejszej lub większej wartości wybiera ją, animując oś liczbową w górę lub w dół, aby wybrana wartość była aktualna. Przesunięcie w górę lub w dół pozwala na wielokrotne zwiększanie lub zmniejszanie bieżącej wartości. Długie naciśnięcie mniejszych i większych wartości pozwala również na szybką zmianę bieżącej wartości. Stuknięcie bieżącej wartości pozwala wpisać żądaną wartość.

Możesz spróbować zmienić motyw.

Powiązane problemy