我有三个EditBox,在一个框中输入一个数字后设置下一个焦点的最佳方法是什么,然后跟踪从box3到box2再到box1或从中删除(向后)的最佳方法是什么box3,to box2然后如果我尝试输入一些东西到box3,将其聚焦并在box3上输入新号码,如果box2已经有了东西。
我想从这个问题开始,这比我在这里发布的内容简单得多:(你可以看到我在那里尝试的东西,但我想如果我得到了基本的想法,我可以把它拉下来。)< / p>
posting with details for issue
我只是在使用两个不同的东西时遇到一个大问题,OnkeyListener用于删除,而TextWatch用于输入,我似乎无法正确使用它。 Android新手。
答案 0 :(得分:1)
这里我给你一个简单的例子,其中有3个Editbox,每个编辑框和每个编辑框分别显示移动电话号码3,3,4位数字。改变焦点。
XML
<EditText
android:id="@+id/edtxt_phonenumber_one"
android:layout_width="wrap_content"
android:layout_height="39dp"
android:layout_margin="5dp"
android:layout_weight="1"
android:background="@drawable/textbox_1"
android:ems="3"
android:maxLength="3"
android:gravity="center"
android:inputType="number" />
<EditText
android:id="@+id/edtxt_phonenumber_two"
android:layout_width="wrap_content"
android:layout_height="39dp"
android:layout_margin="5dp"
android:layout_weight="1"
android:background="@drawable/textbox_1"
android:ems="3"
android:maxLength="3"
android:gravity="center"
android:inputType="number" />
<EditText
android:id="@+id/edtxt_phonenumber_three"
android:layout_width="wrap_content"
android:layout_height="39dp"
android:layout_margin="5dp"
android:layout_weight="1"
android:background="@drawable/textbox_1"
android:ems="4"
android:maxLength="4"
android:gravity="center"
android:inputType="number" />
</LinearLayout>
类
//Initialize 3 of EditBox.
// Rest of te code
edtxt_phonenumber1.addTextChangedListener(new TextWatcher() {
public void afterTextChanged(Editable s) {
if (s.length() > 2) {
edtxt_phonenumber2.requestFocus();
}
if (s.length()==0) {
//previoue_box.requestFocus();
}
}
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
}
public void onTextChanged(CharSequence s, int start, int before,
int count) {
}
});
edtxt_phonenumber2.addTextChangedListener(new TextWatcher() {
public void afterTextChanged(Editable s) {
if (s.length() > 2) {
edtxt_phonenumber3.requestFocus();
}
if (s.length()==0) {
edtxt_phonenumber1.requestFocus();
}
}
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
}
public void onTextChanged(CharSequence s, int start, int before,
int count) {
}
});
edtxt_phonenumber3.addTextChangedListener(new TextWatcher() {
public void afterTextChanged(Editable s) {
if (s.length() > 3) {
edtxt_email.requestFocus();
}
if (s.length()==0) {
edtxt_phonenumber2.requestFocus();
}
}
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
}
public void onTextChanged(CharSequence s, int start, int before,
int count) {
}
});
希望它有所帮助!!