2016-06-02 3 views
0

Während ich eine App gemacht habe, die als Countdown-Timer funktioniert, musste ich einen Dialog einrichten, um die Zeit festzulegen, von der herunter gezählt werden soll. Als ich versuchte, einen TimePicker zu verwenden, wurde mir klar, dass ich ihn nicht so verwenden kann, wie ich es vorhatte, nämlich die Anzahl der Stunden zu wählen, da die Begrenzung 24 Stunden beträgt. Außerdem könnte ich die Anzahl der Sekunden nicht einstellen.Wie kann man mit zwei NumberPickern einen besseren TimePicker erstellen (Stundenwert erhöht/verringert sich, wenn der Minutenwert 59/0 kreuzt)?

Also musste ich meinen eigenen TimePicker mit 2 NumberPickers implementieren. (Ich habe den Sekunden NumberPicker noch nicht eingeschlossen)

Ich wollte eine winzige Funktionalität hinzufügen, die durch den TimePicker gegeben wird, wo, wenn ich den Minutenselektor über den Wert 59 auf den Wert 00 rollen würde, würde er erhöhen Stunden Wert von 1 (und in gleicher Weise verringern, wenn ich von 00 bis 59 gehen).

Beispiel:

Example

Ich habe den folgenden Code verwendet, mein Ziel zu erreichen, aber ein kleines Problem bleibt.

Java-Code:

final NumberPicker hr_np = (NumberPicker) d.findViewById(R.id.hr_timepicker); 
final NumberPicker min_np = (NumberPicker) d.findViewById(R.id.min_timepicker);  
min_np.setOnValueChangedListener(new NumberPicker.OnValueChangeListener() { 
     @Override 
     public void onValueChange(NumberPicker picker, int oldVal, int newVal) { 
      if(newVal==0 && oldVal==59 && hr_np.getValue()<10) 
       hr_np.setValue(hr_np.getValue()+1); 
      else if(newVal==59 && oldVal==0 && hr_np.getValue()>0) 
       hr_np.setValue(hr_np.getValue()-1); 
     } 
    }); 

XML Layout:

<LinearLayout 
    android:orientation="vertical" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:gravity="center"> 



    <LinearLayout 
     android:orientation="horizontal" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:gravity="center"> 
     <NumberPicker 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:id="@+id/hr_timepicker" /> 
     <TextView 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text=":" 
      android:textSize="40sp" 
      android:textIsSelectable="true" /> 
     <NumberPicker 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:id="@+id/min_timepicker" /> 
    </LinearLayout> 

    <Button 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="Set" 
     android:id="@+id/b1" 
     android:layout_marginTop="40dp" /> 

</LinearLayout> 

Das Problem ist, dass, wenn ich auf dem Number Wert klicken und einen neuen Wert eingeben noch die obige Logik direkt, Stöcke. Sagen wir, die aktuelle Uhrzeit ist 03:59, ich klicke auf den Minuten-Tab und gebe 00 ein, die Zeit wechselt auf 04:00. Dies geschieht auch im normalen TimePicker.

Gibt es eine Möglichkeit, das zu beheben?

Antwort

0

, warum Sie nicht einfach verwenden Timepicker

<TimePicker 
     android:id="@+id/timePicker1" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" /> 
+0

Timepicker wird mir ein Intervall von 50 Stunden nicht zulassen auswählen. Wie ich bereits erwähnt habe, hat TimePicker das gleiche Problem, mit dem ich konfrontiert bin. –

Verwandte Themen