Devo consentire all'utente di inserire solo il tempo in ##: ## nel testo di modifica al volo, esiste un modo per raggiungerlo? Ho usato sotto il codice ma non funziona.Come limitare il tempo di immissione per edittext in Android
Sono in grado di immettere il numero più di 24 valori come 45623: 5689.
edit.setInputType(InputType.TYPE_DATETIME_VARIATION_TIME)
Anche android:text="time"
non funziona.
come posso ottenere questa cosa. Qualcuno mi può suggerire come posso fare questa cosa.
Desidero consentire all'utente di inserire nei primi 2 posti fino a un valore 23 e quindi compositivo: e quindi l'utente può consentire fino a un valore di 59.
ad esempio
23:59 correct
24:05 incorrect
02:56 correct
02:79 incorrect
Ho usato questo filtro sarto anche, ma la sua non funziona
ho ottenuto questo codice da qualche altro posto in SO.
Codice:
InputFilter timeFilter = new InputFilter() {
public CharSequence filter(CharSequence source, int start, int end, Spanned dest,
int dstart, int dend) {
if (source.length() == 0) {
return null;// deleting, keep original editing
}
String result = "";
result += dest.toString().substring(0, dstart);
result += source.toString().substring(start, end);
result += dest.toString().substring(dend, dest.length());
if (result.length() > 5) {
return "";// do not allow this edit
}
boolean allowEdit = true;
char c;
if (result.length() > 0) {
c = result.charAt(0);
allowEdit &= (c >= '0' && c <= '2');
}
if (result.length() > 1) {
c = result.charAt(1);
allowEdit &= (c >= '0' && c <= '9');
}
if (result.length() > 2) {
c = result.charAt(2);
allowEdit &= (c == ':');
}
if (result.length() > 3) {
c = result.charAt(3);
allowEdit &= (c >= '0' && c <= '5');
}
if (result.length() > 4) {
c = result.charAt(4);
allowEdit &= (c >= '0' && c <= '9');
}
return allowEdit ? null : "";
}
};
A cura Domanda: main.xml codice del file
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:gravity="center"
android:orientation="vertical"
android:padding="10dp" >
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginTop="5dp"
android:gravity="center"
android:orientation="horizontal" >
<TextView
android:id="@+id/txtRecipientName"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingRight="20dp"
android:text="@string/recipient_name" />
<EditText
android:id="@+id/edTxtRecipient"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:ems="10"
android:paddingLeft="20dp" >
<requestFocus />
</EditText>
</LinearLayout>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginTop="5dp"
android:gravity="center"
android:orientation="horizontal" >
<TextView
android:id="@+id/txtParcelDeliverTime"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingRight="20dp"
android:text="@string/delivered_time" />
<EditText
android:id="@+id/edTxtParcelDeliverTime"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:ems="10"
android:paddingLeft="20dp" >
</EditText>
</LinearLayout>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginTop="5dp"
android:gravity="center"
android:orientation="horizontal" >
<Button
android:id="@+id/btnRecipient_OK"
android:layout_width="100dp"
android:layout_height="wrap_content"
android:text="@android:string/ok" />
</LinearLayout>
</LinearLayout>
Questo codice funziona, ma se inserisco primo alfabeto e inserire il valore corretto allora la sua non funziona perché source
contiene il suo precedente valore di carattere.
ho provato il codice in questo momento, penso che il problema in file XML che avevo menzionato ieri, rimuovi qualsiasi convalida del tipo di input da XML di EditText della tua attività e poi funziona bene –
Grazie per l'aiuto, attendo il mio codice di file XML. Non c'è convalida né convalida del tipo di input. –
Controlla la mia domanda aggiornata –