如何在视图中选择下一个和上一个编辑文本

时间:2012-03-19 11:07:01

标签: android android-edittext

我的应用程序中有五个编辑文本。我还有两个按钮叫做“Next”和“Previous”。现在,当我动态地从视图中单击相应的按钮时,我想选择下一个和上一个编辑文本字段。有没有办法做到这一点。

4 个答案:

答案 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;
    }
}