2017-09-25 4 views
0

Ich bin neu bei Android und arbeite derzeit an einer Timer-App, um sich damit vertraut zu machen.Eingabemethode für Timer-App

Ich möchte eine Benutzereingabe für die Einstellung des Timers erhalten. Ich möchte es in einem HH: mm: ss Format haben. Das UI zeigt zunächst die Zeichenfolge "00h 00m 00s" und eine Zifferntastatur an, und wenn der Benutzer Zahlen eingibt, sollte das Feld von rechts nach links gefüllt werden und zwischen Sekunden/Minuten/Stunden liegen. Beispiel: Benutzertypen „123“> 00:01:23

Meine aktuelle Idee ist 3 Textviews für die Zahlen zu haben, und 3 Textviews für die h/m/s Marker, fügen Sie dann auch 10 Tasten mit Zahlen auf um die Felder zu füllen. Aber ich denke, es muss einen einfacheren Weg geben, dies zu tun. Meine Frage ist: wäre es möglich, dies mit Soft-Input-Methode und EditTexts passieren? Ich hatte auch Interesse an anderen Möglichkeiten, dies zu implementieren, solange die Formatbeschränkung (00h 00m 00s) eingehalten wird.

Antwort

0

können Sie Android verwenden: input = "Anzahl" die Anzahl keyboard.Use TextWatcher anzuzeigen Ihr result.For Beispiel anzuzeigen:

EditText tv_filter = (EditText) findViewById(R.id.filter); 
TextWatcher fieldValidatorTextWatcher = new TextWatcher() { 
    @Override 
    public void afterTextChanged(Editable s) { 
    } 

    @Override 
    public void beforeTextChanged(CharSequence s, int start, int count, int after) { 
    } 

    @Override 
    public void onTextChanged(CharSequence s, int start, int before, int count) { 
     if (filterLongEnough()) { 
      populateList(); 
     } 
    } 

    private boolean filterLongEnough() { 
     return tv_filter.getText().toString().trim().length() > 2; 
    } 
}; 
tv_filter.addTextChangedListener(fieldValidatorTextWatcher); 

Und dann, am Ende, zeigen Sie Ihr Ergebnis in TexView mit Ihre Logik der Aufteilung der Eingabe-Zeichenfolge entsprechend. Ich weiß, es ist sehr allgemein, aber Ihr Problem wird gelöst werden.

+0

Hallo, danke für die Antwort. :) Willst du sagen, dass ich _one_ EditText Feld mit Android benötigen: inputType = "Number" für die Eingabe und _one_ TextView um es anzuzeigen? Ich bin ziemlich neu und ich habe Schwierigkeiten zu überwachen, was Ihr Code-Snippet tut. :) Was soll dieses Snippet tun? Ich sehe, dass wir dem tv_filter EditText einen TextChangedListener hinzufügen, aber was macht das? – Gugger

+0

Dieses Snippet fügt einen TextWatcher zu Ihrem Editierfeld hinzu, in dem der Benutzer die Zahlen eingeben wird und Sie können dann Ihre Logik implementieren, indem Sie die Eingaben aufteilen und dann die gewünschten Ergebnisse in textView.Für Beispiel: Hier verwende ich meine Methode filterLongEnough, um etwas zu tun und eine Liste aufzufüllen. Aber Sie können das ändern.'code ' String [] strarr = (s.toString()). split ("\\ s"); strarr [0] .concat (":"); strarr [1] .concat (":"); strarr [2] .concat (":"); StringBuilder sb = neu StringBuilder(); sb.append (strarr [0] + strarr [1] + strurr [2]); – Sbm4034

+0

Ich sehe, so ist im Wesentlichen Notwendigkeit, populatelist zu implementieren. Das macht jetzt vollkommen Sinn. Aber würde der Text, den ich in den EditText eintippe, auch nicht angezeigt? Oder die Idee ist, einen EditText in der Benutzeroberfläche zu haben, aber ihn zu verstecken? – Gugger

Verwandte Themen