Ich habe vier EditText-Felder, die zusammen einen Wert bilden. Jede Box sollte 1 Nummer enthalten. Wenn ich eine Zahl in eine Box eingabe, sollte der Fokus zur nächsten Box gehen. Ich habe eine Verknüpfung zwischen den Boxen "gefälscht", indem ich den Fokus ändere, wenn der Text geändert wird. Der folgende Code funktioniert, aber ich möchte zulassen, dass der Benutzer Werte einfügt, die dann in den EditText-Feldern aufgeteilt werden. Wenn ich also "123" in die Box [0] einfüge, sollte die Box [0] "1" enthalten und die Box [1] "2" usw. Ich habe versucht, android:maxLength="1"
in das XML einzufügen, aber wenn ich Inhalte einfügen möchte, Die Validierung von maxLength entfernt alle bis auf das erste Zeichen.Verknüpfte EditText Boxen für Einfügen
Was ist der beste Weg, den Inhalt einer Paste über die 4 EditText-Boxen zu teilen?
EnterNumberLayout.java
public class EnterNumberLayout extends LinearLayout {
EditText[] textBoxes;
public static final int NUMBER_OF_ENTRIES = 4;
public EnterNumberLayout(Context context, AttributeSet attrs) {
super(context, attrs);
this.setOrientation(HORIZONTAL);
textBoxes = new EditText[NUMBER_OF_ENTRIES];
LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
for (int i = 0; i < NUMBER_OF_ENTRIES; i++){
EditText et = (EditText) inflater.inflate(R.layout.number_box, null);
//et.setOnKeyListener(new BackspaceKeyListener(et));
et.addTextChangedListener(new MoveFocusWatcher(et));
et.setTag(i);
textBoxes[i] = et;
this.addView(et, i);
}
}
private class MoveFocusWatcher implements TextWatcher {
private View view;
public MoveFocusWatcher(View view) {
this.view = view;
}
public void beforeTextChanged(CharSequence s, int start, int count, int after) {}
public void onTextChanged(CharSequence s, int start, int before, int count) {
if ((int) this.view.getTag() < NUMBER_OF_ENTRIES - 1) {
(textBoxes[(int) this.view.getTag() + 1]).requestFocus();
}
}
public void afterTextChanged(Editable s) {}
}
}
number_box.xml
<?xml version="1.0" encoding="utf-8"?>
<EditText xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:inputType="number|none"
android:ellipsize="start"
android:gravity="center_horizontal|center_vertical"
android:imeOptions="actionNext"/>