Android: как разрешить навигацию в ListView на устройствах без сенсорного экрана? - PullRequest
1 голос
/ 26 августа 2011

Я бы хотел избавиться от фильтра Android Market android.hardware.touchscreen, чтобы разрешить загрузку моего приложения на устройствах без сенсорного экрана (устройство только с клавиатурной навигацией).

Не так много устройств, которые не являются сенсорными, но есть некоторые ...

Мое приложение работает с клавиатурой, за исключением ListViews ... Я бы хотел, чтобы пользователь мог перемещаться в моем ListView только с клавиатуры. А именно, он должен иметь возможность прокручивать в listView => разные ячейки должны быть выделены последовательно, когда он прокручивает.

Как это сделать?

Спасибо !!

Ответы [ 3 ]

2 голосов
/ 26 августа 2011

Может быть, вы можете создать onKeyListener. Это выглядит примерно так:

private class myListKeyListener implements onKeyListener {
    @Override
    public boolean onKey(View arg0, int arg1, KeyEvent arg2) {

        if (KeyEvent.ACTION_DOWN == arg2.getAction()) {
            switch (arg1) {
            case KeyEvent.KEYCODE_DPAD_UP: {

                    int i = list.getSelectedItemPosition();
                    if (i > 0)
                        i--;
                    list.setSelection(i);
                    break;}
}

то же самое для ВНИЗ, ВПРАВО, ВЛЕВО ... вы можете делать с ним все, что хотите

После этого присоедините слушателя к вашему списку в методе onCreate:

list.setOnKeyListner(new MyListKeyListener);

Надеюсь, это поможет вам;)

1 голос
/ 26 августа 2011

Не ответ, просто sidenote

устройства Android Market [...] без сенсорного экрана

Устройства Android, которые хотят использовать приложения Google, включая Android Market, должны соответствовать Документу определения совместимости Android (CDD) ( см. Здесь и здесь ).

Из этого документа ( текущий выпуск ):

7.2.4. Сенсорный ввод

Реализации устройства:

• ДОЛЖЕН иметь сенсорный экран
• МОЖЕТ иметь емкостный или резистивный сенсорный экран

Вы уверены, что есть устройства, у которых нет сенсорного экрана и могут получить доступ к Android Market (кроме некоторых хаков)?

1 голос
/ 26 августа 2011

Полагаю, вам нужно переопределить событие onKeyDown и соответственно изменить фокус элементов списка.

...