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);
}
});
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. –
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. –
Nie tego się spodziewałem. Czy możesz napisać kod na temat tego, co dokładnie robisz? – barrel