我的应用程序中有五个编辑文本。我还有两个按钮叫做“Next”和“Previous”。现在,当我动态地从视图中单击相应的按钮时,我想选择下一个和上一个编辑文本字段。有没有办法做到这一点。
答案 0 :(得分:11)
btnNext.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
int id = getCurrentFocus().getNextFocusDownId();
if(id != View.NO_ID) {
findViewById(id).requestFocus();
System.out.println("Next");
}
}
});
btnBack.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
int id = getCurrentFocus().getNextFocusUpId();
if(id != View.NO_ID) {
findViewById(id).requestFocus();
System.out.println("Back");
}
}
});
这是您必须设置焦点顺序的XML
<EditText
android:id="@+id/et1"
android:nextFocusDown="@+id/et2"
android:nextFocusUp="@+id/et2"
....../>
<EditText
android:id="@+id/et2"
android:nextFocusDown="@+id/et1"
android:nextFocusUp="@+id/et1"
...../>
修改强>
如果要创建视图动态,则应使用以下方法设置下一个焦点
setNextFocusDownId(id)
setNextFocusUpId(id);
答案 1 :(得分:3)
利用
android:nextFocusLeft
android:nextFocusRight
android:nextFocusUp
android:nextFocusDown
在layout.xml中的editText属性中。
e.g。 android:nextFocusDown="@id/myNextEditText"
有关如何使用它的详细信息,请关注this link.
答案 2 :(得分:3)
答案 3 :(得分:1)
尝试 -
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.btn_next :
if(editText1.hasFocus()){
editText2.requestFocus();
}else if(editText2.hasFocus()){
editText3.requestFocus();
}
break;
case R.id.btn_previous :
if(editText2.hasFocus()){
editText1.requestFocus();
}else if(editText3.hasFocus()){
editText2.requestFocus();
}
break;
}
}