Как выбрать следующий и предыдущий текст редактирования в представлении - PullRequest
5 голосов
/ 19 марта 2012

В моем приложении пять текстовых правок. У меня также есть две кнопки под названием «Далее» и «Назад». Теперь я хочу выбрать следующее и предыдущее поле для редактирования текста, когда я нажимаю соответствующие кнопки, чтобы динамически сформировать мой вид. Есть ли способ сделать это.

Ответы [ 4 ]

11 голосов
/ 19 марта 2012
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);
3 голосов
/ 19 марта 2012

я думаю, что это может вам помочь,

http://kahdev.wordpress.com/2008/06/29/changing-button-text-in-android/

3 голосов
/ 19 марта 2012

Используйте

android:nextFocusLeft

android:nextFocusRight

android:nextFocusUp

android:nextFocusDown

в атрибутах вашего editText в layout.xml.

например. android:nextFocusDown="@id/myNextEditText"

Для получения более подробной информации о том, как его использовать, перейдите по этой ссылке.

1 голос
/ 19 марта 2012

Попробуйте -

@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;
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...